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

التصويب

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

يدور البرج لمواجهة هدفه: ليس البرج كله، الذي يستقر على قاعدته، بل رأسه، وهو كائن فرعي يحمل السبطانة. يؤدي تدوير كائن فرعي إلى تدوير كل ما تحته، مع إبقاء الكائن الأب كما هو.

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

Vector3 toShip = ship.position - lamp.position;
toShip.y = 0f;
lamp.rotation = Quaternion.LookRotation(toShip);
Quaternion.LookRotation(direction) هو الدوران الذي يواجه ذلك الاتجاه، لذا يتجه المصباح نحو السفينة فورًا. أما رأس البرج، فينبغي أن يدور بسرعة محددة: تدير Quaternion.RotateTowards(from, to, maxDegrees) من فصل الدوران بحد أقصى قدره maxDegrees، وتعطي سرعة دوران بالدرجات في الثانية مضروبة في Time.deltaTime نصيب كل إطار.

challenge icon

التحدي

متوسط
  1. في Tower، أضف حقلين قابلين للتسلسل: head (من النوع Transform) وturnSpeed (عدد عشري، بالدرجات في الثانية). يوفّر النموذج الأولي ArrowTower العنصر الفرعي ArrowHead والقيمة 270.
  2. عندما يكون للبرج هدف، أدر الرأس نحوه حول المحور الرأسي فقط، بحد أقصى turnSpeed درجة في الثانية.
  3. عند عدم وجود هدف، اترك الرأس كما هو.

اضغط على Play، وابنِ الأبراج بجانب المسار وشاهدها وهي تتبع الأعداء، ثم اضغط على Check.

جرّب بنفسك

using UnityEngine;

public class Tower : MonoBehaviour
{
    public int cost = 50;
    public float range = 4f;

    private Enemy target;

    void Update()
    {
        target = FindTarget();
    }

    Enemy FindTarget()
    {
        Enemy nearest = null;
        float nearestDistance = range;
        foreach (Enemy enemy in Enemy.All)
        {
            float distance = Vector3.Distance(transform.position, enemy.transform.position);
            if (distance <= nearestDistance)
            {
                nearest = enemy;
                nearestDistance = distance;
            }
        }
        return nearest;
    }
}
quiz iconاختبر نفسك

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

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