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

نقاط الطريق

الدرس 1 من 18 في دورة لعبة Unity: الدفاع عن الأبراج على Coddy.

في هذه الدورة، ستبني لعبة دفاع عن الأبراج. تسير الأعداء على طول مسار في موجات باتجاه قاعدتك، وتوقفهم باستخدام الأبراج التي تضعها على منصات البناء، ثم تطورها وتبيعها. يضيف كل درس ميزة واحدة. توجد جميع النصوص البرمجية الاثني عشر للعبة في المشروع منذ البداية؛ معظمها هياكل قصيرة تملؤها الدروس اللاحقة.

يتبع العدو المسار عبر نقاط الطريق: وهي كائنات GameObjects فارغة عند الزوايا، مرتبة في مصفوفة حسب ترتيب المرور بها. يحتفظ العدو بفهرس نقطة الطريق التي يتجه إليها، ويتحرك نحوها، وعند الوصول ينتقل إلى النقطة التالية. تحرك Vector3.MoveTowards(current, target, maxStep) نقطةً نحو هدف بمقدار لا يتجاوز maxStep ولا يتخطاه أبدًا، لذا يصل العدو إلى نقطة الطريق تمامًا، ويمكن لـ == التحقق من وصوله. تحلّق طائرة الدورية المسيّرة هذه بين مواقعها وتبدأ من جديد بعد آخر موقع:

public Transform[] posts;
public float speed = 3f;
private int current;

void Update()
{
    Vector3 goal = posts[current].position;
    transform.position = Vector3.MoveTowards(transform.position, goal, speed * Time.deltaTime);
    if (transform.position == goal)
    {
        current = (current + 1) % posts.Length;
    }
}

لا يكرر العدو المسار: فبعد نقطة الطريق الأخيرة، لا يبقى مكان يذهب إليه. عندما يصل الفهرس إلى Length، فإنه لا يعود يشير إلى نقطة طريق، وتؤدي قراءة waypoints[waypoints.Length] إلى ظهور استثناء IndexOutOfRangeException، لذا يُتحقق من الفهرس قبل استخدامه. تقع نقاط الطريق على ارتفاع 0.6 فوق الأرض، وهو ارتفاع مركز العدو، لذا فإن السير مباشرة نحوها يُبقي قدميه على الأرض.

challenge icon

التحدي

سهل

يقف Grunt عند أول نقطة مسار، WP0، ويحتوي نص Enemy البرمجي بالفعل على نقاط المسار الثماني في waypoints، من WP0 عند نقطة الظهور إلى WP7 عند القاعدة.

  1. أضف next كعدد صحيح خاص: فهرس نقطة المسار التي يتجه إليها Grunt. يبدأ عند WP0، لذا يبدأ next بالقيمة 1.
  2. في Update، حرّك Grunt باتجاه waypoints[next] بسرعة speed وحدة في الثانية باستخدام Vector3.MoveTowards.
  3. عندما يصل إلى نقطة المسار هذه، يتجه إلى النقطة التالية.
  4. بعد آخر نقطة مسار، توقّف: لا مزيد من الحركة ولا أخطاء.

اضغط Play وشاهد Grunt وهو يسير على المسار، ثم اضغط Check.

جرّب بنفسك

using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed = 2f;
    public Transform[] waypoints;

    void Update()
    {
        // اسلك المسار هنا: من نقطة مسار إلى أخرى، بالترتيب.
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس لعبة Unity: الدفاع عن الأبراج