Você que é fã de jogos plataforma, programa utilizando a Engine Unity 2D e quer criar personagens para seu game. Então você vai adorar o post Como criar estados para objetos no Unity 2D, pois o mesmo ensina de maneira fácil e rápida a implementação do sistema de estados dentro do seu jogo.
Como criar estados para objetos no Unity 2D
A implementação do sistema de estados possibilita a troca de ações de personagens do game de forma mais fluída, simples e leve. Os estados consistem em tudo o que o jogador (ou inimigos) podem fazer dentro do jogo, seja pular, andar, coletar objetos, entre outros.
Para explicar o sistema de estados vamos analisar o script abaixo (C#), o qual é utilizado para determinar se o objeto (geralmente este objeto é o player ou um inimigo no jogo) esta no ar, pulando ou no chão.
Script de estados básico
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { private string AR = "ar"; private string CHAO = "chao"; private string PULO = "pulo"; private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "Ground") { estado = CHAO; } } private void OnCollisionExit2D(Collision2D collision) { if (estado==CHAO) { if (collision.gameObject.tag == "Ground") estado = AR; } } }
Criamos as variáveis “ar”, “chao” e “pulo” do tipo “string”, que tem como objetivo controlar as ações executadas em tempo real do personagem.
Em seguida, pode-se observar os seguintes métodos: “OnCollisionEnter2D” e “OnCollisionExit2D” ambos servem para identificar a colisão do objeto no qual o script esta atrelado.
O método “OnCollisionEnter2D” nos indica quando o nosso objeto entrou em contato com outro Box Collider do tipo Ground (Chão).
Vamos dizer para o nosso objeto que, quando ele identificar que entrou em contato com o Chão, ele deve entrar no estado “CHAO”.
O método “OnCollisionExit2D” nos indica quando o nosso objeto parou de entrar em contato com outro Box Collider do tipo Ground (Chão).
Dessa maneira, quando o nosso objeto parar de entrar em contato com o chão, o seu estado vai ser “AR”
O script de estados pode ser atrelado ao jogador, por exemplo, facilitando transições de animações e ações do seu player! O script apresentado também facilita a transição de ações para inimigos, caso queira que os inimigos em seu jogo tenham comportamentos diferentes em situações variadas.
Lembrando que a mudança de estados acontece no objeto em que o seu script está atrelado, no nosso caso, no inimigo ou no personagem.
Mas de que maneira o sistema de estados pode nos beneficiar?
Ele faz com que o restante do código fique muito mais simples e sucinto! Com o sistema de estados, podemos rodar as animações de pulo, por exemplo, de forma mais simples, fazendo com que, consequentemente, o código fique mais otimizado! Vamos exemplificar abaixo;
if (estado == AR) myAnimator.SetBool("pulo", true); if (estado != AR) myAnimator.SetBool("pulo", false);
Além da facilidade na troca das animações, o sistema de estados vai possibilitar uma organização muito maior dentro do seu código, fazendo com que a criação de lógicas mais complexas se torne algo mais simples.
Com a variável “estado” definida como pública, é possível acompanhar a transição de estados do objeto, como visto na imagem acima.
Acesse a nossa área de cursos para aprender a desenvolver jogos utilizando as ferramentas Unity, Construct 2, Game Maker e MonoGame. Participe também do nosso grupo de estudos no Facebook.