无法在 Unity 中制作非平滑移动脚本



从昨天开始,我开始制作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);
}
}
}

您可以使用:

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

这将使用旧输入系统的更便携的GetAxis,而不需要对GetAxis()进行平滑。

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

最新更新