Mover e Animar Personagem Unity

Mover e Animar um Personagem na Unity

Quando criamos um novo projeto na Unity, uma das primeiras funcionalidades que queremos implementar é a movimentação do nosso personagem principal. Caso a gente queira criar um personagem humanoide, temos que ter em mente que devemos ter no nosso projeto os seguintes ativos:

– Modelo 3D ou 2D do personagem
– Pacote de Animações

Preparando o Personagem e as Animações Unity

Para esse exemplo, estaremos utilizando um personagem baixado da asset store, o Adventure Character.

Para fazer o movimento do personagem, precisamos ter animações para ele. Para isso, você pode baixar o pacote gratuito Basic Motions FRRE, da asset store. É um pacote com um conjunto de animações humanoides de movimento.

Criando a Movimentação do Personagem

Com o personagem na cena, podemos adicionar nele o componente CharacterController, que é um componente que permite fazer movimentações de personagem, sem ter que usar Rigidbody.
Componente de CharacterController
Para configurar as animações do personagem devemos criar um AnimatorController no projeto, e defini-lo no campo do Controller do componente de Animator, que temos no nosso personagem em cena. Para ver como é feito isso na prática, acompanhe o vídeo acima.
Aba Animator da Unity

Script de Movimento do Personagem Unity

Com o personagem já configurado, agora podemos criar o script de Movimento dele. Vamos escrever o script da seguinte forma:
				
					using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movimento : MonoBehaviour
{
	private CharacterController character;
	private Animator animator;
	private Vector3 inputs;

	[SerializeField] private float velocidade = 2f;

	void Start()
	{
		character = GetComponent<CharacterController>();
		animator = GetComponent<Animator>();
	}

	void Update()
	{
		inputs.Set(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
		character.Move((transform.forward * inputs.magnitude * Time.deltaTime * velocidade));
		character.Move((Vector3.down * Time.deltaTime));

		if (inputs != Vector3.zero)
		{
			animator.SetBool("andando", true);
			transform.forward = Vector3.Slerp(transform.forward, inputs, Time.deltaTime * 10);
		}
		else
		{
			animator.SetBool("andando", false);
		}
	}
}
				
			

Depois de criar esse script, basta você adicioná-lo ao personagem.  É possível também controlar a velocidade do movimento, basta configurar para isso a variável velocidade, no inspetor.

Você pode ver mais em: https://www.youtube.com/watch?v=pie6nLlZ7aM&t=12s

Deixe um comentário

O seu endereço de e-mail não será publicado.