Почему мой объект движется влево и вверх, не щелкая мышью? - PullRequest
0 голосов
/ 02 мая 2020

мой персонаж перемещается влево и вверх без моего вмешательства, а когда я нажимаю d и s, он перемещается влево и вниз. Я видел, что это не моя вина, потому что я debug.log все мои кнопки нажали.

public float moveSpeed = 0.1f;

    public void Update()
    {
        //not inportant
        foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode)))
        {
            if (Input.GetKey(vKey))
            {

                Debug.Log(vKey.ToString());

            }
        }

        if (Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxisRaw("Vertical") != 0)
        {
            float horizontalMovement = Input.GetAxisRaw("Horizontal") * moveSpeed;
            float verticalMovement = Input.GetAxisRaw("Vertical") * moveSpeed;

            Vector3 directionOfMovement = new Vector3(horizontalMovement, verticalMovement, 0);

            gameObject.transform.Translate(directionOfMovement);
        }

1 Ответ

1 голос
/ 02 мая 2020

Если вы используете контроллер или контроллер подключен к вашему устройству. Вы должны использовать мертвую зону для RawInput, потому что контроллер может не центрироваться в ноль, и может иметь какое-то небольшое значение для RawAxis.

попробуйте изменить ваше условное выражение так, чтобы оно было примерно таким:

float rawX = Input.GetAxisRaw("Horizontal");
float rawY = Input.GetAxisRaw("Vertical");

if(Mathf.Abs(rawX) > 0.05f || Mathf.Abs(rawY) > 0.05f) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...