我该如何为 Unity 角色控制器创建重力?

问题描述 投票:0回答:1

我一直在开发一款由角色控制器控制角色的新游戏。

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的教程进行操作,但根本不起作用。我的重力起作用了,但我的角色不会在我想要的时候跳跃。当我击中太空时它有时会跳跃,有时则不会。

c# unity-game-engine game-physics
1个回答
0
投票

按照您的设置方式,如果您在更新中运行此代码,即使有时您没有忘记设置 isGrounded 变量,此代码片段也可能会在设置 isGrounded 之前运行,并导致跳转效果无效

if (character.isGrounded)
{
    velocity.y = 0; 
}

您可能需要确保在跳转后立即更新 isGrounded 并确保 isGrounded 暂时不会设置。 但您应该更改此方法,因为处理接地状态和角色的速度不应受到跳跃的影响。如果以后用这种方法实现悬崖坠落,可能会出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.