Abrindo portões com Unity 2017

Gunnar CorreaGunnar Correa21/09/2017 às 01:59:08 - 6.384 acessos

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.

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!


Resident Resident Evil Unity Unity 2017 Animação Animator Animation Unity Animation Programming Unity Programação Unity Unity C# Animação C# Animator play Alavanca Unity Portão Unity tu

Compartilhe


Gunnar Correa

Gunnar Correa

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



Site atualizado

Olá, nosso site recebeu uma nova atualização e por conta disso, alguns artigos ainda estão sendo atualizados. Dependendo do conteúdo que você procura, poderá encontrar imagens e trechos de códigos mal formatados.

Estamos trabalhando para normalizar todos os conteúdos, muito em breve, esse problema não mais existirá.


Comentários