تمهيد : أولاً أحب أن أهنّئ المسلمين بمناسبة شهر رمضان ….. ثانياً أعتذر عن التأخير مرة أخرى … كما يبدو الآن فالسلسلة مواعيدها غير منتظمة … سأحاول في الفترة المقبلة أن أنتظم أكثر أو أن أصدر جزئين معاً مثلا حين بتوفر لي بعض الوقت …. حسناً … فلنعود للعمل … لقد تركنا اللعبة على هذه الحال .
الكاميرا وحركة الدبابة : هناك تعديل بسيط على حركة الدبابة …… فالأزرار المعينة لاتجاهات الحركة ليست مناسبة …. فالأزرار الرأسية تجعل الدبابة تتحرك في مستوى أفقي …. وهذا قد يسبب ارتباك للاعب … ولهذا فسنقوم بتعديل بسيط على حركة الدبابة وهو تغير الأزرة التي نتحقق من الضغط عليها إلى Horizontal ولكن عندها سنلاحظ ان الحركة معكوسة … وحلّها بسيط وهو إبدال الـ (+) بـ (-) …… الآن الحركة منطقية بعض الشئ … والآن فلنترك الدبابة ولنتحدّث عن حركة الكاميرا قليلاً …. اللعبة من النوع التنقّل الجانبي (side-scroller) … ولهذا فيجب على الكاميرا أن تتحرك مع الدبابة في المستوي المسطح وفي نفس اتجاه الدبابة …. ولهذا أرفنقنا نفس السكريبت الخاص بالدبابة للكاميرا … ولكن لايبدو أنه يعمل كما يبدو …. فلو نظرت إلى المشهد خلال اللعب ستجد أن الكاميرا تتحرك في الاتجاه المعاكس … ولهذا يجب أن ننشئ نسخة خاصة بالكاميراً من السكريبت ونعدّل عليها لتوافق خصائص الكاميرا ….. حسنا … فلننشئ سكريبت جديد ولنسمّيه cameraController …. في الحقيقة هو نفس السكريبت الخاص بحركة الدبابة ولكن مع تعديل بسيط …. وهو عكسّ اتجاه الحركة …. أي إبدال الـ (-) بالـ (+) مرّة أخرى وطبعا تخصيص المتغيرات …. ها هو السكريبت بعد التعديل :
var cameraSpeed : int = 2.0 ; function Update () {
if(Input.GetButton(“Horizontal”))
{
transform.position += Input.GetAxis(“Horizontal”) * transform.right * cameraSpeed * Time.deltaTime;
}
}
والآن عند تطبيق السكريبت الجديد على الكاميرا وحذف السكريبت القديم وتجربة اللعبة سيبدو لك أن الدبابة لا تتحرك …. ولكن في الحقيقة هي تتحرك والكاميرا معا فلا يبدو التغير النسبيي بين موقعيهما ظاهراً لأنهما يتحركان في نفس الاتجاه وبنفس السرعة …. وهذا هو المطلوب … أيضا ربما علينا أن نسرّع الحركة قليلاً للدبابة والكاميرا …. فلنعيّن سرعة الدبابة والكاميرا لـ 3 بدلاً من 2 من خلال خصائص مكوّن السكريبت لكل واحدة …. ولنضع دليلاً ثابتا أيضاً كمكعب مثلا حتى نستطيع قياس إذا كانت السرعة مناسبة …. كما في الصورة هنا :-
var power:float;
{
if(Input.GetButtonDown(“Jump”))
{
}
والآن المطلوب هو أنه كلّما ضغط اللاعب على زر المسطرة فستخلق طلقة عند الإحداثيات كذا وكذا وسنضيف إلها سرعة/قوة في إتجاه الأمام …. فلنبدأ أولا بخلق العنصر بوضع هذا الكود بين علامات الـ{} للدالة الشرطية :-
var power:float;
function Update () {
if(Input.GetButtonDown(“Jump”))
{
var instanceProjectile = Instantiate(pfProjectile, transform.position, Quaternion.identity);
instanceProjectile.rigidbody.AddForce(Vector3(1,1,0)*power);
}
}
يمكنك تحميل ملف المشروع والتعديلات التي تمّت حتى الآن من هنا : http://dl.dropbox.com/u/9047337/TankGame/TankGame02.rar