المنصات المتحركة
جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 49 من 56.
التحدي
متوسطيجب أن تنزلق المنصة الزرقاء ذهابًا وإيابًا فوق الفجوة. احتفظ بكل شيء من الدرس السابق.
أكمل MovingPlatform:
- حقلاّن يضبطهما Inspector، هما
distance(3) وspeed(1.5)، وpublic Vector3 delta. - تنزلق من موضع بدايتها مسافة
distanceوحدة على طول +x بسرعةspeedوحدة في الثانية، ثم تعود إلى موضع بدايتها، وهكذا إلى الأبد. - في كل إطار، تمثل
deltaالمسافة التي قطعتها في ذلك الإطار: موضعها بعد الحركة ناقص موضعها قبلها.
لا تنتقل الشخصية التي تستخدم CharacterController مع ما تقف عليه: فعلى منصة متحركة، تبقى في مكانها وتنزلق المنصة من تحتها. كما أن تحريك transform.position الخاص بها لا يجدي: إذ تبدأ Move التالية لوحدة التحكم من الموضع الذي رآها فيه نظام الفيزياء آخر مرة، فتُلغي التغيير. اجعل Player يركب المنصة:
- أضف
OnControllerColliderHit. عندما يشير العمودي على سطح الاصطدام إلى الأعلى (hit.normal.yأكبر من 0.5: أي إن اللاعب يقف عليه) ويكون للكائنMovingPlatform، احتفظ بتلك المنصة في حقل. - في
Update، أضفdeltaالخاصة بتلك المنصة إلى الحركة التي تمررها إلىcontroller.Move، ثم تخلّص من مرجع المنصة (اضبط الحقل علىnull). سيعثر استدعاءMoveعليها مجددًا ما دام اللاعب واقفًا عليها.
اضغط Play، واقفز إلى المنصة واركبها، ثم اضغط Check.
جرّب بنفسك
using UnityEngine;
public class MovingPlatform : MonoBehaviour
{
// سيُستكمل هذا في درس لاحق: منصة تتحرك بسلاسة ذهابًا وإيابًا.
}
جميع دروس بناء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارالمنصات المتحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء بلا نهاية
ثلاثة مساراتعوائق أمامك