Menu
CoddyTech

بيانات العدو

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

ينضم Runner إلى Grunt. وهو أسرع وصحته أقل، ويتشارك كل Runner هذه الأرقام، لذا فهي تخص النوع لا عدوًا بعينه. تُخزَّن هذه الأرقام في الأصل ScriptableObject ‏EnemyData: يحتوي المشروع على GruntData (السرعة 2، الصحة 9) وRunnerData (السرعة 3.5، الصحة 5)، ويُعيّن Inspector لكل عدو أصلًا خاصًا به في الحقل data.

يقرأ كل عدو أرقام نوعه من خلال هذا الحقل، كلما احتاج إليها:

void Start()
{
    Debug.Log(name + " pays " + data.reward);
}

الصحة مختلفة: فـ Grunt الذي تلقى ضربة تكون صحته أقل من Grunt الذي يقف خلفه. لذا يحتفظ الأصل بالقيمة maxHealth، وينسخها كل عدو إلى حقل خاص به في Awake، التي تعمل فور إنشاء الكائن. لا تغيّر الأصل نفسه أبدًا: فسيؤدي ذلك إلى تغيير كل عدو من هذا النوع.

challenge icon

التحدي

سهل

امنح كل عدو إحصاءات نوعه من الأصل الخاص به.

  1. في Enemy، استبدل speed بـ public EnemyData data; واجعله يتحرك بسرعة data.speed.
  2. أضف private int health; واجعل قيمته data.maxHealth في Awake.

اضغط على «العب»: يتجاوز Runner ‏Grunt. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

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

    private int next = 1;

    void Update()
    {
        if (next >= waypoints.Length)
        {
            return;
        }

        Vector3 target = waypoints[next].position;
        transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
        if (transform.position == target)
        {
            next++;
        }
    }
}

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

تدرّب بنفسك: Playground لـ Unity