الشبكة العربية لمطوري الألعاب

موهوب  16mofed84 مشاركة 11

وجدت الحل لم انتبه على وجود function خاص به في محرك الفيزياء وهو يأخذ ١٨ ميلي ثانيه و الغريب بالأمر ان اللعبة بقيت سريعه دون اي تأثير لا اعلم ما الامر احتمال لانه ملف dll خارجي لكي يستفيد الجميع رابط المحرك هو http://jitter-physics.com/ لاستخدام ray casting ضع الاتجاه مضروب بقيمه اكبر مسافه و سيعمل ملاحظة لا تضع المسافة normalized و الا ستجد النتيجة دائماً falseو شكرًا جميعا

خبير مدير وسام البهنسي مشاركة 12

أما في 03/ربيع الأول/1433 03:53 ص، فقد تنهد 16mofed84 بارتياح وهو يرد:

الكود بعد استخدام ref و الinverse matrix لل شعاع الى ان مشكله جديده ظهرت في matrix الشعاع لا يظهر نتيجته الا ضمن مكان محدود ...و اعتقد ان مصفوفه التحويل هي matrix.identity لان العكس ايضا هو matrix.identity
ذكرت كلمه الاعداء في النص .. ايضا انا استخدمه لايجاد مكان اصطدام مع الحائط ..

هذا الكود يقوم بالعملية لكنه يزيد من حسابات لا طائل منها. انظر الملاحظات التالية:
 
* أولاً، هذا السطر لا داعي له:


if(ent.Meshes[meshCount].Triangles[triCount].Sphere.Intersects(rr).HasValue)

هو مضيعة للوقت ليس إلا...  
 
*  الإجراء RayToTriangle ليس له فائدة، ويمكن دمجه مع RayIntersectTriangle. هكذا تختصر زمن تمرير بارامترات واستدعاء إجراءات.
 
* هذان السطران بلا طائل:


System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();

* الإجراء RayIntersectTriangle يقوم بحساب بعد نقطة الاصطدام عن مبدأ الشعاع، لكنك تقوم بإعادة حساب هذا البعد في السطر:

if (Vector3.Distance(intersect, rr.Position) < min)

وهذا هدر للأداء، فإجراء حساب البعد ليس رخيصاً البتة (يحوي عملية جذر تربيعي). 
وطبعاً في النهاية إن كنت تقوم بهذه العملية على مجسم معقد، فسيبقى الأداء سيئاً. عندها لا بد من استخدام التقنيات التي ذكرتُها سابقاً.
 
بالتوفيق

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير مدير وسام البهنسي مشاركة 13

في 04/ربيع الأول/1433 03:21 م، غمغم 16mofed84 باستغراب قائلاً:

وجدت الحل لم انتبه على وجود function خاص به في محرك الفيزياء وهو يأخذ ١٨ ميلي ثانيه و الغريب بالأمر ان اللعبة بقيت سريعه دون اي تأثير لا اعلم ما الامر

😲  😲  😲
 
18 ميلي ثانية؟ هذا ظلم!!!
 
الزمن المنطقي هذه الأيام لهذا الإجراء هو حوالي 0.2 ميلي ثانية لمجسم يحوي 5000 مثلث.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز