Logo SatellaSoft



Abrindo portões com Unity 2017

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


Ícone homem Gunnar Correa
Ícone data de publicação 21/09/2017
Ícone quantidade de visualização 604
Ícone bandeira do Brasil Português

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.

Unity Animation Editor 2017

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!




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!