sábado, 8 de outubro de 2011

Classe Controller (UnrealScript)

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:


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.
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

Nenhum comentário:

Postar um comentário