C# Can';不要把不流畅的动作脚本统一起来

C# Can';不要把不流畅的动作脚本统一起来,c#,unity3d,C#,Unity3d,从昨天开始,我开始做2D游戏,我在做角色移动时发现了一个问题。我想让角色左、右、上、下移动,因为我在使用新Unity的输入系统时遇到了困难,所以我使用了旧的Input.GetAxis()。我的角色在移动,但我不喜欢平滑的移动,我希望玩家总是以相同的速度移动,并在我释放移动键的那一刻停止。但我知道每次我按下键,他都只能移动一点 代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine;

从昨天开始,我开始做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);
        }
    }
}
您可以使用:

这将使用旧输入系统的更便携的
GetAxis
,而无需平滑
GetAxis()


或者,如注释中所述,您可以将
Input.GetKeyDown()
替换为
Input.GetKey()
,以检查是否持有密钥。

Input.GetKeyDown
只调用一次。您需要释放该键才能再次调用该方法。只要按下键,您就希望角色移动,因此使用
Input.GetKey
更改
Input.GetKey
。只要你拿着钥匙就会被呼叫。
Input.GetAxisRaw("Horizontal");
Input.GetAxisRaw("Vertical");