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
– 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.
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.
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();
animator = GetComponent();
}
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