A classe Controller é como se fosse o cérebro por trás das entidades na Unreal Engine. Ela é responsável por receber eventos externos, processar esses eventos e decidir qual será a próxima ação que deve ser executado pelo objeto do tipo Pawn que esteja associado ao Controller.
As duas subclasses principais de Controller são AIController e PlayerController. Se o objetivo é criar um personagem que será controlado pelo jogador então devemos criar uma subclasse de PlayerController. Se o personagem for controlado por Inteligência Artificial então criaremos uma subclasse de AIController. A imagem abaixo mostra as subclasses de Controller existentes no UDK:
As duas subclasses principais de Controller são AIController e PlayerController. Se o objetivo é criar um personagem que será controlado pelo jogador então devemos criar uma subclasse de PlayerController. Se o personagem for controlado por Inteligência Artificial então criaremos uma subclasse de AIController. A imagem abaixo mostra as subclasses de Controller existentes no UDK:
O momento em que um objeto Pawn é associado a um objeto Controller é chamado de Possessão. Existe uma função na classe Controller com o nome de Possess() que é chamada quando a Possessão ocorre, sendo um ótimo local para fazer algum tipo de inicialização.
O código abaixo cria uma simples subclasse de AIController. Este novo Controller define dois estados: Parado e Perseguindo. O personagem começa o jogo no estado Parado, quando ele visualizar o jogador, passa para o estado Perseguindo e começa a se mover em direção ao jogador.
O código abaixo cria uma simples subclasse de AIController. Este novo Controller define dois estados: Parado e Perseguindo. O personagem começa o jogo no estado Parado, quando ele visualizar o jogador, passa para o estado Perseguindo e começa a se mover em direção ao jogador.
class TesteController extends AIController;
var Pawn jogador;
event Possess(Pawn inPawn, bool bVehicleTransition)
{
super.Possess(inPawn, bVehicleTransition);
//A função abaixo inicializa a Física do objeto Pawn
inPawn.SetMovementPhysics();
}
auto state Parado
{
event SeePlayer(Pawn Seen)
{
super.SeePlayer(Seen);
jogador = Seen;
GotoState('Perseguindo');
}
}
state Perseguindo
{
Begin:
MoveToward(jogador);
goto 'Begin';
}
Para testar este código crie uma classe Pawn e coloque o nome do pacote e o nome da classe Controller no atributo ControllerClass da classe Pawn, como no exemplo abaixo:
ControllerClass=RomeroScripts.TesteController
Para mais informações sobre Controller e Pawn:
Characters Technical Guide
ControllerClass=RomeroScripts.TesteController
Para mais informações sobre Controller e Pawn:
Characters Technical Guide
Nenhum comentário:
Postar um comentário