Ataki rycerza
Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 40 z 64.
Wyzwanie
ŚredniNiech rycerz zaatakuje, gdy cię dopadnie.
- W pliku
KnightStates.csnapiszAttackState: od razu wykonajknight.Stop()iknight.playerHealth.TakeDamage(1), a potem co sekundę. Gdy odległość jest większa niżattackRange, ścigaj gracza. - W
ChaseState, gdy odległość jest mniejsza niżattackRange, zmień stan naknight.attack. - W metodzie Awake klasy
Knightdodajattack = new AttackState(this);.
Naciśnij „Graj” i pozwól rycerzowi cię dopaść: w konsoli pojawi się Player hp: 9. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
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()
{
}
}
Wszystkie lekcje w sekcji Architektura gier w Unity
1Komponenty, nie hierarchie
Małe komponentyBazowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPowtórka: modułowa wieżyczkaPowtórka: podwójne działo4Dane serializowane
Klasy serializowalneListy w InspectorzeEnumy w InspectorzePodsumowanie: tabela łupówPodsumowanie: losowanie łupów7Maszyny stanów
Stany jako klasyStan alarmowyMaszyna stanówPrzejściaMózgi przeciwnikówAtaki rycerzaPodsumowanie: stany drzwi2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPowtórka: klawisz interakcjiPowtórka: najbliższy w zasięgu5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaOcal wiatrFale jako danePowtórka: Baza przedmiotówPowtórka: Kupowanie w sklepie8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearestPoćwicz samodzielnie: Edytor online Unity