Не могу сделать скрипт неплавного движения в Unity - PullRequest
1 голос
/ 12 июля 2020

Со вчерашнего дня я начал работать над 2D-игрой и обнаружил проблему, когда делал движение персонажа. Я хотел заставить персонажа двигаться влево, вправо, вверх и вниз, и, поскольку мне было трудно использовать новую систему ввода Unity, я использовал старую Input.GetAxis (). Мой персонаж двигался, но мне не нравилось плавное движение, я хотел, чтобы игрок всегда двигался с одинаковой скоростью и останавливался в тот момент, когда я отпускал клавиши перемещения. Но знаю, что я могу заставить его двигаться только немного каждый раз, когда нажимаю клавиши.

Вот код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AlternativeController : MonoBehaviour
{
    public float speed;
    bool canMove = true;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
        if (canMove)
        {
            Move();
        }
    }

    void Move()
    {
        if (Input.GetKeyDown("right"))
        {
            transform.Translate(speed, 0, 0);
        }

        if (Input.GetKeyDown("left"))
        {
            transform.Translate(-speed, 0, 0);
        }

        if (Input.GetKeyDown("up"))
        {
            transform.Translate(0, speed, 0);
        }

        if (Input.GetKeyDown("down"))
        {
            transform.Translate(0, -speed, 0);
        }
    }
}

1 Ответ

1 голос
/ 13 июля 2020

Вы можете использовать:

Input.GetAxisRaw("Horizontal");
Input.GetAxisRaw("Vertical");

Это будет использовать более переносимый GetAxis старой системы ввода без сглаживания GetAxis().

В качестве альтернативы, как сказано в комментариях, вы можете заменить Input.GetKeyDown() на Input.GetKey(), чтобы проверить, удерживается ли ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...