Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Método `Input.GetAxis` retornando pequenos valores flutuantes

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);
        }
    }
}
2 respostas
solução!

Oi, Ricardo, tudo bem?

Você pode usar Input.GetAxisRaw para evitar isso já que ele só vai de -1, 0, 1

Bons estudos!

boaaa. bem mais simples. obrigado! :-)