Logo SatellaSoft



Abrindo e fechando portas com Unity

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


Ícone homem Gunnar Correa
Ícone data de publicação 11/02/2018
Ícone quantidade de visualização 1,387
Ícone bandeira do Brasil Português

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

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.

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óximacool

 

 




Sobre o autor


Gunnar Correa

Nome: Gunnar Correa

Site: http://www.gunnarcorrea.com


Autodidata, graduado em Desenvolvimento Web e especialista em Tecnologias na Educação em uma universidade no interior de São Paulo. Comecei meus estudos na área de programação quando ainda era criança, e atualmente estou estudando desenvolvimento de jogos.

Sou o CEO do portal SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.


Comentários



É necessário estar autenticado para comentar, clique aqui para se registrar ou aqui para acessar a sua conta!