用力量跳跃Unity

时间:2014-05-20 12:26:01

标签: c# unity3d game-physics rigid-bodies

我希望我的球员能够以一种影响其刚性的力量跳跃。目前,我在FixedUpdate循环中有以下代码:

else if(Input.GetMouseButtonDown(0) &&( Input.mousePosition.y < Screen.height/3) && isGrounded == true)
{
    Debug.Log ("jump");
    isGrounded = false;
    if(!isGrounded)
        rigidbody.AddForce(Vector3.up * jumpSpeed);

    Debug.Log(isGrounded);
}
void OnCollisionStay(Collision collisionInfo)
{
    isGrounded = true;
}

当我在屏幕上的适当位置按下鼠标按钮时,我会显示所有正确的调试信息。但我的球员不动。 jumpSpeed设置为100,我甚至尝试将其设置为1000以查看我的力量是否太低。但没什么。我在这做傻事吗?

2 个答案:

答案 0 :(得分:0)

一个简单的问题?为什么要检查     if(!isGrounded) 在你加力之前?它总是会评估为true,因为您之前将其设置为false。也许你打算在跳转输入的逻辑检查之外进行检查。

无论如何,回答问题。如果您阅读AddForce上的文档,您会看到有一个可选参数来说明这是什么类型的力量。默认为'强制',你想要的是'冲动',所以改变你的行:

Debug.Log ("jump");
isGrounded = false;
rigidbody.AddForce(Vector3.up * jumpSpeed, ForceMode.Impulse);

答案 1 :(得分:0)

我测试了你的代码并且工作正常,我想问题将出现在代码的其他部分。