Cursos / Jogos Digitais / Inteligência Artificial para Jogos / Aula

arrow_back Aula 05 - Máquina de Estados Finitos

2. Implementando uma MEF

Como mencionado no início da aula, você começou a implementar um mecanismo simples de mudança de comportamento. O cobrador de pênalti possui o estado de ir em direção à bola e o de chute (que não segue mais a bola). Na implementação realizada (na aula anterior), essa mudança de estado só foi possível porque você colocou uma “variável de controle” em um dos atributos do jogador. A variável, booleana, era usada no método Update() para saber quando o jogador devia ir em direção à bola ou não.

Essa forma de implementação é muito limitada porque uma variável booleana pode assumir apenas dois valores e, portanto, o jogador pode assumir apenas dois possíveis estados. Se você quiser que ele tenha um comportamento mais complexo, precisa de uma outra forma de implementar a MEF.

De uma forma geral, as variações referem-se principalmente a dois itens. O primeiro é como definir o comportamento dos diferentes estados, e o segundo é como os eventos são avaliados durante a execução de um determinado estado. Usando o Unity, você pode ainda utilizar o mecanismo de animação interno dele, chamado Mecanim, que nada mais é que uma ferramenta visual para implementar uma MEF. Apesar de estar direcionada à mudança de sprites ou de animações de modelos 3D, a Mecanim pode ser facilmente utilizada para modelar comportamentos simples de personagens. Porém, à medida que a complexidade do comportamento aumenta, outros mecanismos são necessários.

Nessa aula, serão apresentadas duas estratégias de implementação de uma MEF no Unity, ambas usando recursos de programação. De qualquer forma, vale salientar que a Mecanim é mais adequada para modelar comportamentos simples e traz a vantagem de usar uma ferramenta visual para especificar os estados. Essas formas de implementação não usam a Mecanim e são, portanto, mais flexíveis, mas perdem a organização visual. A primeira é implementada através de blocos de comandos e é voltada principalmente para comportamentos bem simples. A segunda faz uso de um padrão de projeto específico para mudança de estados, State Pattern. Essa estratégia é mais adequada em comportamentos com um número maior de estados e quando se deseja ter mais flexibilidade no reuso deles.

Versão 5.3 - Todos os Direitos reservados