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.
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.
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.