我一直在开发一款由角色控制器控制角色的新游戏。
void Jump()
{
if (character.isGrounded)
{
velocity.y = 0;
}
if(Input.GetKeyDown(KeyCode.Space) && character.isGrounded)
{
velocity.y += Mathf.Sqrt(jumpForce* gravity * 3);
}
if(character.isGrounded == false)
{
velocity.y -= gravity * Time.deltaTime;
}
character.Move(velocity *Time.deltaTime);
}
我对重力的编程方式是否做错了什么?
我按照Unity的教程进行操作,但根本不起作用。我的重力起作用了,但我的角色不会在我想要的时候跳跃。当我击中太空时它有时会跳跃,有时则不会。
按照您的设置方式,如果您在更新中运行此代码,即使有时您没有忘记设置 isGrounded 变量,此代码片段也可能会在设置 isGrounded 之前运行,并导致跳转效果无效
if (character.isGrounded)
{
velocity.y = 0;
}
您可能需要确保在跳转后立即更新 isGrounded 并确保 isGrounded 暂时不会设置。 但您应该更改此方法,因为处理接地状态和角色的速度不应受到跳跃的影响。如果以后用这种方法实现悬崖坠落,可能会出现问题。