Menu
CoddyTech

Şövalye Saldırıyor

Coddy'nin Unity Journey'sinin Unity'de Oyun Mimarisi bölümünün bir parçası. Ders 40 / 64.

challenge icon

Görev

Orta

Şövalye oyuncuyu yakaladığında saldırmasını sağlayın.

  1. KnightStates.cs içinde AttackState yazın: knight.Stop() çağrısını ve knight.playerHealth.TakeDamage(1) çağrısını hemen, ardından her saniye yapın. attackRange değerinden daha uzaktaysa peşinden koşsun.
  2. ChaseState içinde, attackRange değerinden daha yakınsa knight.attack durumuna geçsin.
  3. Knight sınıfının Awake metoduna attack = new AttackState(this); ekleyin.

“Oyna” düğmesine basın ve şövalyenin sizi yakalamasını sağlayın: Console'da Player hp: 9 görünür. Ardından “Kontrol et” düğmesine basın.

Kendin dene

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'de Oyun Mimarisi bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground