Abrindo e fechando portas com Unity

Crie animações para diferentes tipos de portas usando a Unity 3D

Publicado em

Dentro da Unity 3D, podemos criar diferentes tipos de animações sem a necessidade de softwares de terceiro, como o Blender 3D. Nestas aulas você aprende a criar animações para três tipos de portas, que são elas: porta simples, porta dupla e porta automática.

Para criar a animação é muito simples, basta usar a ferramenta Animation e criar dois Animation Clip, um com a animação de abrir e o outro com a animação de fechar. Após criar as animações, é necessário criar as transições no Animator Controller, como mostra a figura abaixo.

Animator Controller animações de portas
Animator Controller animações de portas

Após as configurações no Animator Controller, é necessário criar os parâmetros do tipo trigger e associa-los as suas devidas transições. Por último basta criar um script que passe os valores para o Animator Controller.

Parâmetros no animator controller, para abrir as portas.
Parâmetros no animator controller, para abrir as portas.

Confira as três videoaulas abaixo

Abrindo e fechando porta com Unity

 

Abrindo e fechando porta dulpla com Unity

 

Abrindo e fechando porta automática com Unity

Para complementar este artigo, abaixo estão os dois scripts utilizados nas videoaulas.

PortaSimples.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PortaSimples : MonoBehaviour
{

	public Animator _animator;

	private bool _colidindo;
	private bool _portaAbera = false;

	void Update ()
	{
		if (Input.GetKeyDown (KeyCode.E) && _colidindo) {
			_portaAbera = true;
			_animator.SetTrigger ("Abrir");
		}
	}

	void OnTriggerEnter (Collider _col)
	{
		if (_col.gameObject.CompareTag ("Player")) {
			_colidindo = true;
		}
	}

	void OnTriggerExit (Collider _col)
	{
		if (_col.gameObject.CompareTag ("Player")) {
			if (_portaAbera) {
				_animator.SetTrigger ("Fechar");
			}

			_colidindo = false;
		}
	}
}

 

PortaAutomatica.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PortaAutomatica : MonoBehaviour {

	public Animator _animator;

	private bool _colidindo;
	private bool _portaAbera = false;

	void Update ()
	{
		if (_colidindo) {
			_portaAbera = true;
			_animator.SetTrigger ("Abrir");
		}
	}

	void OnTriggerEnter (Collider _col)
	{
		if (_col.gameObject.CompareTag ("Player")) {
			_colidindo = true;
		}
	}

	void OnTriggerExit (Collider _col)
	{
		if (_col.gameObject.CompareTag ("Player")) {
			if (_portaAbera) {
				_animator.SetTrigger ("Fechar");
			}

			_colidindo = false;
		}
	}
}

Por hora é isso, dúvidas deixem nos comentários e até a próxima.

 

 

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Deixe um comentário
Aguarde...