Menu
CoddyTech
flag Ar iconالعربيةdown icon

المنصات المتحركة

جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 49 من 56.

challenge icon

التحدي

متوسط

يجب أن تنزلق المنصة الزرقاء ذهابًا وإيابًا فوق الفجوة. احتفظ بكل شيء من الدرس السابق.

أكمل 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
{
    // سيُستكمل هذا في درس لاحق: منصة تتحرك بسلاسة ذهابًا وإيابًا.
}

جميع دروس بناء ألعاب حقيقية