【发布时间】:2020-01-14 00:57:39
【问题描述】:
我有这个移动脚本来移动我的角色:
Vector3 vector = Vector3.zero;
if (Input.GetKey(KeyCode.W) && !Input.GetKey(KeyCode.S))
{
vector += Vector3.forward;
}
else if (Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.W))
{
vector += Vector3.back;
}
if (Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.D))
{
vector += Vector3.left;
}
else if (Input.GetKey(KeyCode.D) && !Input.GetKey(KeyCode.A))
{
vector += Vector3.right;
}
if (grounded)
{
transform.Translate(vector.normalized * movementSpeed * Time.deltaTime);
}
我还有一个碰撞检测代码会影响布尔值grounded。我用它来检测玩家何时跳跃。
当角色不在地面上时,我想这样做,玩家无法移动它,但角色仍在跳跃前的方向移动。现在,如果我跳跃,角色就会停在半空中。
我想我可以使用我的 RidgidBody,但我认为这不是正确的选择。
有什么想法吗?
【问题讨论】:
-
如果您希望您的角色继续移动,例如他向前奔跑,现在跳跃,那么使用刚体移动似乎很合乎逻辑。您不想要的只是您不希望用户输入改变他最初前进的方向或能够再次跳跃
-
您为什么认为
Rigidbody不正确? -
@BugFinder 我可以使用 RidgidBody.MovePossition(),但我仍然要怎么做才能不让玩家在空中移动角色? (我对这些东西有点陌生)
-
使用刚体你给它动量或速度,它会为你处理它