Menu
CoddyTech

Le chevalier attaque

Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 40 sur 64.

challenge icon

Défi

Moyen

Fais attaquer le chevalier lorsqu’il t’attrape.

  1. Dans KnightStates.cs, écris AttackState : exécute knight.Stop() et knight.playerHealth.TakeDamage(1) immédiatement, puis toutes les secondes. Au-delà de attackRange, poursuis le joueur.
  2. Dans ChaseState, si le joueur est à moins de attackRange, passe à knight.attack.
  3. Dans le Awake de Knight, ajoute attack = new AttackState(this);.

Appuie sur « Jouer » et laisse le chevalier t’attraper : la Console affiche Player hp: 9. Puis clique sur « Vérifier ».

Essayez vous-même

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()
    {
    }
}

Toutes les leçons de Architecture de jeu dans Unity

Entraînez-vous par vous-même : Playground Unity