نقاط الطريق
الدرس 1 من 25 في دورة لعبة Unity: الدفاع عن الأبراج على Coddy.
في هذه الدورة، تبني لعبة دفاع عن الأبراج: يسير الأعداء في مسار على شكل موجات باتجاه قاعدتك، وتوقفهم الأبراج التي تبنيها بجانب المسار. يضيف كل درس ميزة واحدة. اضغط على «العب» لتجربة اللعبة، وعلى «تحقق» لتقييمها. توجد البرامج النصية الاثنا عشر كلها في المشروع منذ البداية؛ معظمها هياكل قصيرة تُستكمل في الدروس اللاحقة، وملف EnemyData متوفر للدرس 2.
يتكوّن المسار من ثماني نقاط مسار، من WP0 عند نقطة الظهور إلى WP7 عند القاعدة، ضمن مصفوفة waypoints الخاصة بـ Grunt. يحتفظ Grunt بفهرس النقطة التي يتجه إليها، ويتحرك نحوها. لا تتجاوز Vector3.MoveTowards هدفها أبدًا، لذا يصل Grunt تمامًا إلى نقطة المسار، ويمكن لـ == معرفة أنه وصل:
Vector3 target = waypoints[3].position;
transform.position = Vector3.MoveTowards(transform.position, target, 5f * Time.deltaTime);
if (transform.position == target)
{
// وصل: اتجه إلى النقطة التالية
}بعد نقطة المسار الأخيرة، يصبح الفهرس مساويًا لـ waypoints.Length، وستؤدي قراءة المصفوفة عند ذلك الموضع إلى حدوث خطأ، لذا تحقّق من الفهرس قبل استخدامه.
التحدي
سهلاجعل Grunt يسير على المسار، من نقطة مسار إلى أخرى.
- في
Enemy، أضفprivate int next = 1;(يبدأ Grunt عند WP0). - في
Update، أعد التنفيذ عندماnext >= waypoints.Length. - تحرّك نحو
waypoints[next].positionباستخدامVector3.MoveTowardsبسرعةspeed * Time.deltaTime؛ وعندما يصل إليها، نفّذnext++.
اضغط «العب»: يسير Grunt عند كل زاوية ويتوقف عند القاعدة. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed = 2f;
public Transform[] waypoints;
void Update()
{
// اتبع المسار هنا: من نقطة مسار إلى أخرى، بالترتيب.
}
}
جميع دروس لعبة Unity: الدفاع عن الأبراج
تدرّب بنفسك: Playground لـ Unity