Boa tarde, eu tenho duas dúvidas no meu código. 1 - Eu tenho como botar que a velocidade da animacao vai mudar conforme a velocidade do personagem? 2- Eu tenho como colocar o if() da animação, que atualmente está dentro da void MovimentarPersonagem(), na void ControlarAnimacao() para ficar mais organizado? Obrigado!!!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PersonagemPrincipal : MonoBehaviour
{
public GameObject Personagem;
public int Velocidade = 1;
public int AlturaPulo = 1;
public LayerMask MascaraChao;
private void Start()
{
}
private void Update()
{
RotacionarPersonagem();
ControlarAnimacao();
}
private void FixedUpdate()
{
MovimentarPersonagem();
}
//MINHAS VOIDS
void MovimentarPersonagem()
{
float eixoX = Input.GetAxis("Horizontal");
float eixoZ = Input.GetAxis("Vertical");
float eixoY = Input.GetAxis("Jump");
Vector3 movimentar = new Vector3(eixoX, 0, eixoZ);
Vector3 pular = new Vector3(0, eixoY, 0);
Personagem.GetComponent<Rigidbody>().MovePosition(Personagem.GetComponent<Rigidbody>().position +
movimentar * Velocidade * Time.deltaTime);
Personagem.GetComponent<Rigidbody>().MovePosition(Personagem.GetComponent<Rigidbody>().position +
pular * AlturaPulo * Time.deltaTime);
if (movimentar != Vector3.zero)
{
GetComponent<Animator>().SetBool("IdleRun", true);
}
else
{
GetComponent<Animator>().SetBool("IdleRun", false);
}
}
void RotacionarPersonagem()
{
Ray raio = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit pontoColisao;
if(Physics.Raycast(raio, out pontoColisao, MascaraChao))
{
Vector3 posicaoMiraJogador = pontoColisao.point - transform.position;
posicaoMiraJogador.y = 0;
Quaternion novaRotacao = Quaternion.LookRotation(posicaoMiraJogador);
Personagem.GetComponent<Rigidbody>().MoveRotation(novaRotacao);
}
}
void ControlarAnimacao()
{
}
}