السلام عليكم ورحمة الله وبركاته
هل فكرت في أحد الأيام في عمل محاكاة للعبة GTA أو لعبة RESIDENT EVIL من حيث الذكاء الاصطناعي ؟
وهل حاولة أن تحاكي الذكاء الاصطناعي لبعض الألعاب العالمية ولكنك فشلة ؟
إذا كنت كذلك فقد تفيدك هذه السلسلة
الدرس الأول (الاتجاهات)
ما المقصود بالاتجاهات ؟
الاتجاه هو الموقع الذي ينضر له الكائن .
وهناك نوعين من الاتجاهات معروفة لذا الكل وهي
الاتجاهات الأساسية مثل : الشرق والغرب والشمال والجنوب
الاتجاهات الفرعية مثل : الشمال الشرقي والجنوب الغرب ... إلخ
ولكن ماذا لو أرت أن تستخدم اتجاه بين الاتجاه الأساسي والاتجاه الفرعي فما العمل ؟
حسنا لكي تتضح الصورة أكثر لنأخذ هذا المثال
المثال : كائن يريد النضر لكائن آخر ولنفرض أن الكائن الأول حصان والآخر قط
فما العمل ؟
الحل أتبع الخطوات التالية :
1-حدد موقع كل من الكائنين عن طريق الإحداثيات xy)) .
2-إعمل متجه يصل بين النقطتين (الموقعين).
3-أوجد ميل المتجه وليكن أسمه (م) عن طريق المعادلة (ص1-ص0)/(س1-س0) = م .
4-أوجد زاوية ميل المتجه والتكن (ز) عن طريق العلاقة ظا (ز) = م .
5- تحقق من أن الزاوية بالقياس الرادياني ومن ثم حولها إلى القياس الستيني عن طريق(الزاوية بالقياس الستيني =( الزاوية بالقياس الرادياني /PI ) * 180) )
6-الخطوة الأخيرة : معرفة الاتجاه هل هو للأمام أو للخلف (لأن لكل متجه اتجاهين اتجاه للأمام واتجاه للخلف) .
شرح الخطوة الأخيرة
الاتجاه للأمام تعني الزاوية =(ز سيتيني +صفر درجة)
الاتجاه للخلف تعني الزاوية=(ز سيتيني +180 درجة)
ولكن كيف نعرف الاتجاه هل هو للأمام أم للخلف ؟
الحل
إذا كان س0> س1 وَ ص0>=ص1
أو
س0>=س1 وَ ص0<=ص1
فإن الاتجاه للخلف
فإذا لم يتحقق أحد الشرطين فالاتجاه للأمام
شرح الخطوة الأخيرة بمعنى آخر
لو فرضنا أن الحصان يقع في مركز دائرة ما
فإذا كان القط يقع في الربع الثاني أو الثالث من أرباع هذه الدائرة فالاتجاه للخلف
أما إذا كان يقع في الربع الأول أو الرابع فالاتجاه للأمام
الآن كل الذي عليك هو التعويض بقيمة الاتجاه الأمامي أو الخلفي في
دالة glRotatef
إذا كنت تستخدم OpenGL
*حالة خاصة*
إذا كان فرق السينات = صفر
فإن (م) قيمة غير معرفة
إذاً ز=90
وبالتالي الزاوية (الاتجاه) الأمامية =90
والخلفية =270
ويصبح شرط التحقق
إذا ص0> ص1
فإن الزاوية خلفية
إذا ص0<ص1
فإن الزاوية أمامية
بعض التطبيقات على الدرس
1-هل رأيت في بعض الألعاب تعمل سهم وتضعه في أعلى الشاشة بحيث يشير إلى موقع المهمة .
2-هل رأيت الأموات في لعبة RESIDENT EVIL عندما تقترب منهم فإنهم يتجهون إلى اللاعب مباشرة .
3- وكذلك عندما تضرب أحد الرجال في لعبة GTA فإنه يطاردك وينضرلك مباشرة.
4-جميع ألعاب التصويب عندما يريدون إطلاق النار عليك فإنهم يتجهون لك مباشرة ولكن اتجاه اليد قد يمل في أحدى الاتجاهات (أي على حسب دقت تصويب اللاعب ).
5-عندما تتحدث إلى إحدى الشخصيات في لعبة the SIMS فإنه يتجه إليك مباشرة لكي يحادثك .
6-وكذلك لعبة المصارعة الشهيرة SMACK DOWN فإن المصارع يتجه إليك مباشرة .
7-جميع الألعاب التي تدعم خاصية التركيز على شخصية معينة سواء كان لمهاجمتها أو لغير ذلك فإنك في الحقيقة تتجه لها مباشرة.
كما رأيتوا فإن أغلب الألعاب في العالم تدعم مثل هذا التطبيق ولذلك أحببت أن أستفتح به هذه السلسلة
لكي تستفيد من الدرس حاول تطبق الخطوات السابقة وإذا عجزت سأساعدك
الدرس الثاني راح يكون عن المسار المستقيم
والثالث عن المسار المنحني
أي سؤال؟
المثال في المرفق ولكن بدون الكود
الأسهم : تحريك الشخصية
A : لعمل حركة الهجوم
ملف مرفق(ملفات)
AI_1.rar (424.27كيلو )