Ola, mesmo sem pressionar tecla alguma o meu personagem se movia sozinho. percebi ao debugar que Isso acontece porque o método Input.GetAxis
pode retornar pequenos valores flutuantes mesmo quando nenhuma tecla está sendo pressionada. Para corrigir isso, defini um limiar do qual consideramos que o jogador não está se movendo.
Nao sei se esta e' a melhor abordagem, segue codigo, se alguem tiver outra abordagem fico grato:
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Security.Cryptography;
using UnityEngine;
public class ControlaJogador : MonoBehaviour
{
public float velocidade = 10;
private float limiarMovimento = 0.1f; // Limiar para considerar como movimento
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
float eixoX = Input.GetAxis("Horizontal");
float eixoZ = Input.GetAxis("Vertical");
Vector3 direcao = new Vector3(eixoX, 0, eixoZ);
// Verifica se a magnitude da direção é maior que o limiar de movimento
if (direcao.magnitude > limiarMovimento)
{
transform.Translate(direcao * velocidade * Time.deltaTime);
GetComponent<Animator>().SetBool("movendo", true);
}
else
{
GetComponent<Animator>().SetBool("movendo", false);
}
}
}