Menu
CoddyTech

حالة التنبيه

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

challenge icon

التحدي

متوسط

أطلق إنذار البرج عندما يقترب اللاعب.

  1. في TurretStates.cs، اكتب AlertState، مع الرأس واللاعب. عند الدخول: اجعل لون الرأس Color.red، وسجّل Intruder!. عند التحديث: وجّه الرأس نحو اللاعب حول المحور y. عند الخروج: سجّل All clear.
  2. في Turret، اكتب SetState(IState next): نفّذ Exit للحالة القديمة، ثم Enter للحالة الجديدة.
  3. حدّث حالة الإنذار عندما يكون اللاعب ضمن range، وإلا فحدّث حالة المسح، ثم حدّث الحالة الحالية.

اضغط «العب» واقترب سيرًا. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

public class ScanState : IState
{
    private Transform head;
    private float angle;
    private float direction = 1f;

    public ScanState(Transform head)
    {
        this.head = head;
    }

    public void Enter()
    {
        angle = 0f;
        direction = 1f;
        head.GetComponent<Renderer>().material.color = Color.green;
    }

    public void Tick()
    {
        angle += 90f * direction * Time.deltaTime;
        if (angle > 45f)
        {
            angle = 45f;
            direction = -1f;
        }
        if (angle < -45f)
        {
            angle = -45f;
            direction = 1f;
        }
        head.localRotation = Quaternion.Euler(0f, angle, 0f);
    }

    public void Exit()
    {
    }
}

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

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