0

我仍然是 Unity 的新手,我正在尝试制作一个自上而下的 2D 游戏,但我坚持使用移动脚本,当我斜向移动时移动速度更快。当我在“轴”vector2上使用归一化并开始移动时,播放器会继续移动一段时间,然后当我停止按下任何键时突然停止移动,当我移除归一化时,移动恢复正常并且播放器停止缓慢移动并且完美,但是当我对角移动时它仍然更快。

这是我的代码:

{
Rigidbody2D rb;
Vector2 axis;

public float Speed = 400;

void Start()
{
    rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
    movement();
}

void movement()
{
    axis = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")).normlized * Speed;
    rb.AddForce(axis, ForceMode2D.Force);
    rb.drag = 60;

}
}
4

1 回答 1

0

发生的情况是返回的值GetAxis在某些帧上被平滑。因此,当您使用向量时,即使您的输入实际上小于normalize该向量,它也会返回一段时间,因为它正在平滑。1

一般来说,而不是

new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical").normalized`

对于您更愿意使用的较小输入,它总是返回幅度 1Vector2.ClampMagnitude

axis = Vector2.ClampMagnitude(new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")), 1f) * Speed;

仅当向量的总幅度 > 1 时才会钳位

于 2022-01-10T17:51:21.213 回答