Abrindo portões com Unity 2017

Acionando alavanca e abrindo dois portões, uma das clássicas cenas de Resident Evil 5.

Se você já jogou Resident Evil 5, então você já acionou muitas alavancas para debloquear elevador, portas e outros mecanismos. Este artigo é um complemento a duas videoaula de Unity 2017, onde recriamos uma classifica cena de Resident Evil 5.

Basicamente temos dois portões e uma alavanca, ao acionar a alavanca e terminar a sua animação, damos play na animação dos portões. Todas as animações estão com o Loop Mode desativado, pois a animação só deve ser reproduzida uma única vez.

Para fazer a animação, usamos a ferramenta Animation da Unity e ligamos o REC, assim podemos inserir os Keyframes em determinados lugar para criar a transição.

Image 1: Animation Unity 2017

Abrindo portões com Unity 2017 - Parte 1, Preparando as animações

 

Abrindo portões com Unity 2017 - Parte 2, Executando as animações via script

 

Alavanca.cs

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

public class Alavanca : MonoBehaviour
{

    public GameObject _player;

    private Animator _anima;
    private float _playerDistance;
    private int _acionou = 0;
    void Start()
    {
        _anima = this.GetComponent();
    }

    void FixedUpdate()
    {
        if (_acionou == 1)
        {
            _anima.SetTrigger("Acionar");
            _acionou = 2;
        }
    }

    void Update()
    {
        _playerDistance = Vector3.Distance(_player.transform.position, this.transform.position);

        if (_playerDistance <= 3 && Input.GetKeyDown(KeyCode.E) && _acionou == 0)
        {
            _acionou = 1;
        }
    }

    void AbrirPortao()
    {
        Portao._estado = true;
        Destroy(this.GetComponent());
    }
}

 

Portao.cs

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

public class Portao : MonoBehaviour
{

    private Animator _anima;

    public static bool _estado = false;
    void Start()
    {
        _anima = this.GetComponent();
    }

    void Update()
    {
        if (_estado)
        {
            _anima.SetTrigger("Abrir");
            _estado = false;
        }
    }

    void RemoverComponente()
    {
        Destroy(this.GetComponent());
    }
}

Você pode fazer o download gratuito do modelo no Sketchfab, basta acessar o link https://sketchfab.com/models/84155b55e00a4848ba85ad8b486f3aaa

Então é isso, espero que tenha gostado, qualquer dúvida, critica ou sugestões deixem nos comentários.

Até a próxima!