Menu
CoddyTech

התקפות האביר

חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 40 מתוך 64.

challenge icon

אתגר

בינוני

גרום לאביר לתקוף כשהוא תופס את השחקן.

  1. ב־KnightStates.cs, כתוב את AttackState: הפעל את knight.Stop() ואת knight.playerHealth.TakeDamage(1) מיד, ואז בכל שנייה. אם המרחק גדול מ־attackRange, רדוף אחריו.
  2. ב־ChaseState, אם המרחק קטן מ־attackRange, שנה ל־knight.attack.
  3. ב־Awake של Knight, הוסף את attack = new AttackState(this);.

לחץ על "שחק" ותן לאביר לתפוס אותך: ה־Console מציג Player hp: 9. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

using UnityEngine;

public class PatrolState : IState
{
    private Knight knight;
    private int next;

    public PatrolState(Knight knight)
    {
        this.knight = knight;
    }

    public void Enter()
    {
    }

    public void Tick()
    {
        if (knight.PlayerDistance() < knight.sightRange)
        {
            knight.machine.ChangeState(knight.chase);
            return;
        }
        Vector3 point = knight.waypoints[next].position;
        if (knight.DistanceTo(point) < 0.3f)
        {
            next = (next + 1) % knight.waypoints.Length;
        }
        knight.WalkTo(knight.waypoints[next].position);
    }

    public void Exit()
    {
    }
}

public class ChaseState : IState
{
    private Knight knight;

    public ChaseState(Knight knight)
    {
        this.knight = knight;
    }

    public void Enter()
    {
    }

    public void Tick()
    {
        float distance = knight.PlayerDistance();
        if (distance > knight.loseRange)
        {
            knight.machine.ChangeState(knight.patrol);
            return;
        }
        knight.WalkTo(knight.player.position);
    }

    public void Exit()
    {
    }
}

כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity

תרגלו בעצמכם: Unity אונליין