Desenvolvimento Unity

Como criar estados para objetos no Unity 2D

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.

Print

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.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 508 outros assinantes

Quer aprender a programar?

Anúncios