المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : يا أخ PRG of RPG لو تكرمت شئ ضروري



abusraage
26-10-2003, 07:44 PM
السلام عليكم ورحمة الله وبركاته
كيف حالك يا أخ PRG of RPG ...
جزاك الله على اللعبة الي سويتها .... لكن في بعض الأشكاليات ..
أنا درستها بالتفصيل عرفت كل شئ .. ماعدا التصادم ضايقني بالمرة أنت سويت كلاس عن التصادم
الله يخليك أبغاك تحمل ألي سويته أنا وتخلي فراس الي هو أنا مسميه MD2 وكوباخ أنا مسميه MD3 أبغاك تسوي تصادم بينها .....وجزااك الله خير أسمع لو كدرت حط الأمر ومعاه شرحه ...



حط الكود في نفس المثال هذا

abusraage
26-10-2003, 07:58 PM
آآآه معليش حمل هذا لا تحمل الأول

abusraage
26-10-2003, 08:05 PM
معليش ما أقدر أحمله سويلي الأمر عادي بدون لف ولا دوران بدون كلاس على الفورم لا تنسى وضح

PRG of RPG
26-10-2003, 11:23 PM
السلام عليكم

أولاً أحييك على هذا الحماس وأشكرك وهذا هو المطلوب من فكرة Open Source :)

فكرة التصادم بسيطة

إذا كانت الخطوة المستقبلية (next step) ستحدث تصادماً إذا لا تتحرك

أما كيف يقوم بحسابات التصادم هذا شغل المحرك ( أنضر إلى المحرك ODE فهو مثال قوي جداً على حسابات التصادم )

والآن ماذا يتحاج المحرك لكي ييقوم بحسابات التصادم

1- الPosition للشخصية وفي المثال MD2System
2- الOrientation للشخصية ليعرف اتجهاه الشخصية وفي المثال MD2System
3- الجسم المراد كشف التصادم عليه وفي المثال Meshbuilder2
4- السرعة أو الإزاحة
5- نوع التصادم (أنا دائماً أضعه من نوع Box)

والآن سنقوم بعملية

أ- حسابات الشخصية أي الPosition والOrientation



MD2System.Class_SetPointer "hero"

Dim gRay As R3DRay, vDummy As R3DVector3D
gRay.pStart = MD2System.Model_GetPosition
MD2System.Model_GetOrientation gRay.vDir, vDummy, vDummy


السطر 1: قمنا بتحديد الشخصية الرئيسية
السطر 2: gRay متغير الإشعاع (متغير التصادم) ويحمل خاصيتين
pStart : وهي من نوع 3dVector ووضعت من أجل حمل موضع الشخصية
vDir : إتجاه الشخصية
وأيظاً عرفنا متغير مؤقت فقط من أجل إستدعاء صحيح لا كثير ( ولهذا أسميناه ب vDummy )

السطرين 3 و 4 : لملئ المتغير gRay بالقيم الصحيحة

ب - والآن نقوم بعملية كشف التصادم على مجسمات Meshbuilder2



Coll = Meshbuilder2.Class_RayCollision(gRay, R3DINTERSECTIONTYPE_BOX, 2, 0, 0, 0)


حيث Coll متغير من نوع R3DIntersection المخصص لحمل نتائج التصادم

Meshbuilder2.Class_RayCollision : دالة كشف التصادم

ولاحظ أنه تندرج تحت Calss وهذا يعني أن التصادم سيكشف على جميييييع مجسمات Meshbuilder2

ونتيجة التصادم ستجدها في المتغير Coll.bCollide
_________________________________________

وأنت تسأل عن حساب التصادم على Md2 أخرى وليس مجسم Meshbuilder2 ...أليس كذلك :)

تستطيع عملها مباشرة ولكن النتائج للأسف لن تكون دقيقة

لذا الحيلة ببساطة ضع مكعب يحوي الشخصية تماماً وإكتشف التصادم على هذا المكعب
أي إستخدم
Meshbuilder2.Mesh_RayCollision

وليس Meshbuilder2.Class_RayCollision

وهذه الطريقة التي إستخدمها وهي عملية عملية وسريعة جداً ولا تكلف شيئاً :)

أخي abusraage أتمنى المواضيع المتعلقة بالمحرك تكون داخل موضوع المحرك

مبارك عليك الشهر وكل عام وأنت بخير

وبالتوفيق :)

abusraage
27-10-2003, 09:43 AM
مشكور جزاك الله خير ... معليش في شئ ثاني يا PRG of RPG بالنسبة للشخصية كيف حولتها MD2 أنا عندي المقبس موجود كيف شغلتو بس ما جاني شئ وإمكن ال المقبس حقي مو تمام إذا كان عند المقبس نزله ... ثاني شئ بالنسبة Texture مثل هذه الصورة كيف سويتها ... لا تنسى خطوة خطوة تراني بطيئ .. بالنسبة MD2 لمن أحولها لازم كون هناك شروط لشخصية أو يكون في برنامج ثاني معاه ؟؟؟ !! ممكن توضح

PRG of RPG
28-10-2003, 09:14 PM
السلام عليكم

يا أخ abusraage ما رأيك أن تجعل الأسئلة في موضوعها المناسب (http://www.montada.com/showthread.php?p=2289853) :أفكر: