O cavaleiro ataca
Parte da seção Arquitetura de Jogos no Unity do Journey de Unity da Coddy. Lição 40 de 64.
Desafio
MédioFaça o cavaleiro atacar quando alcançar o jogador.
- Em
KnightStates.cs, escrevaAttackState: executeknight.Stop()eknight.playerHealth.TakeDamage(1)imediatamente e, depois, a cada segundo. Se estiver mais longe queattackRange, persiga o jogador. - Em
ChaseState, se estiver mais perto queattackRange, mude paraknight.attack. - No Awake de
Knight, adicioneattack = new AttackState(this);.
Pressione “Jogar” e deixe o cavaleiro alcançar você: o Console mostra Player hp: 9. Depois, pressione “Verificar”.
Experimente você mesmo
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()
{
}
}
Todas as lições de Arquitetura de Jogos no Unity
1Componentes, não hierarquias
Componentes pequenosUm script base de inimigoComponentes abstratosComponentes trabalhando juntosRevisão: torre modularRevisão: canhão duplo4Dados Serializados
Classes SerializáveisListas no InspectorEnums no InspectorRevisão: Tabela de LootRevisão: Sorteie o Loot7Máquinas de estados
Estados como classesO estado de alertaUma máquina de estadosTransiçõesCérebros dos inimigosO cavaleiro atacaRevisão: estados da porta2Interfaces no Unity
IDamageableInterfaces e TryGetComponentGetComponentsRevisão: tecla de interaçãoRevisão: mais próximo ao alcance5ScriptableObjects
Ativos de DadosAtributos da ArmaConfigurações CompartilhadasSalve o VentoOndas como DadosRevisão: Banco de ItensRevisão: Comprar na LojaPratique por conta própria: Playground de Unity