Como implementar feedback e controle de danos em personagens 2D na Unity - Make Indie Games
Como implementar feedback e controle de danos em personagens 2D na Unity
O post Como implementar feedback e controle de danos em personagens 2D na Unity ensina como controlar o dano em personagens 2D, tornando-os imunes durante alguns segundos e como transmitir visualmente essa informação ao jogador.
Unity: Feedback e controle de danos em personagens 2D
Uma das coisas mais importantes em todos os jogos eletrônicos é conseguir demonstrar para o player qual é o estado físico de seu personagem e se o mesmo pode sofrer dano ou não.
Uma forma de fazer isso é utilizar o efeito de piscar no personagem, isto é, toda vez que um personagem estiver piscando significa que o mesmo acabou de sofrer um dano e ficará imune durante um período de tempo. Para fazer com que o feedback funcione, iremos criar um novo script do tipo C#.
public class Player2 : MonoBehaviour
bool imortal;
public float tempoIP;
mainRenderer = GetComponent<SpriteRenderer>();
if (!imortal)
if (collision.gameObject.tag == "Inimigo")
StartCoroutine(PiscarDano());
imortal = true;
Invoke("ResetImortal", tempoIP);
IEnumerator PiscarDano()
for (int i = 0; i < tempoIP; i++)
mainRenderer.enabled = true;
mainRenderer.enabled = false;
void ResetImortal()
imortal = false;
Explicando Variáveis
A booleana "imortal" é responsável em fazer com que o jogador não tome dano quando ela for verdadeira. A imortalidade é ativada quando o jogador toma dano e desativada quando o tempo pré-determinado da variável "tempoIP" chega ao fim.
A variável "tempoIP" determina, simultaneamente, o tempo de imortalidade e quanto tempo o jogador fica piscando.
A variável "mainRenderer" está atrelada ao Sprite renderer; o Sprite renderer é o componente responsável em fazer com que a imagem do nosso personagem apareça na tela. Desabilitando esse componente, fazemos com que o personagem suma da tela.
O script é constituído por duas estruturas principais, a primeira é o método para fazer com que o jogador pisque ao levar dano. Isso é feito a partir do IEnumerator "PiscarDano". Dentro desse método nós temos um laço de repetição "for", que faz com que a repetição das linhas seguintes sejam possíveis.
Ele determina o número de repetições das linhas:
mainRenderer.SetActive(true);
mainRenderer.SetActive(false);
O código acima está dizendo para o "Sprite renderer" ligar e desligar a cada 0.1 segundos. Obs: Já atrelamos o "mainRenderer" ao Sprite renderer na linha:
A segunda coisa que temos de fazer é deixar o jogador invencível durante o tempo em que ele está piscando. Para que isso aconteça, iremos criar uma booleana com o nome "imortal" e um método para resetar a imortalidade após o tempo desejado.
Para ajustarmos o tempo de imortalidade e tempo de piscagem simultaneamente, iremos criar a variável "tempoIP" que também poderá ser mudada no nosso inspector.
Para testar a funcionalidade do feedback, crie um objeto com um Box collider 2D (com a opção trigger ativada), com a tag "Inimigo"e com um Rigidbody2D com a gravidade zerada.
O jogador deve piscar e o tempo de imortalidade deve ser iniciado quando o jogador encostar no objeto inimigo.
Laços de repetição "for"
Coroutines e IEnumerators
Tagsaprenda a criar jogos aprenda a criar jogos 2d C# desenvolvimento de games desenvolvimento de jogos dicas feedback e controle de danos em personagem 2D indie games jogos 2d jogos 3d UNITY unity 3d visual studio