Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity 3d播放器跳跃不起作用,rb.addforce不起作用_C#_Unity3d_Game Physics_Rigid Bodies - Fatal编程技术网

C# Unity 3d播放器跳跃不起作用,rb.addforce不起作用

C# Unity 3d播放器跳跃不起作用,rb.addforce不起作用,c#,unity3d,game-physics,rigid-bodies,C#,Unity3d,Game Physics,Rigid Bodies,我有一个非常基本的无限跑者,我想让我的球员跳跃。我将刚体附加到我的播放器上,并将其实例化。这是我代码的一部分 void FixedUpdate() { if (OnGround) { if (Input.GetKeyDown(KeyCode.Space)) { rBody.AddForce(new Vector3(0, 10, 0), ForceMode.Impulse); Debug.Log("

我有一个非常基本的无限跑者,我想让我的球员跳跃。我将刚体附加到我的播放器上,并将其实例化。这是我代码的一部分

 void FixedUpdate()
{
    if (OnGround)
    {
        if (Input.GetKeyDown(KeyCode.Space))
        { 
            rBody.AddForce(new Vector3(0, 10, 0), ForceMode.Impulse);
            Debug.Log("jump");
            OnGround = false;
        }
    } 
}     

void onCollisionEnter(Collision other)
{
    Debug.Log("collision");
    if (other.gameObject.CompareTag("ground"))
    {
        OnGround = true;
    }
}
我试着把这部分更新,没有结果。 有趣的是,Debug.Logjump显示在控制台上,但玩家不想跳转。 方法void CollisonOther从未被调用。 我也尝试过改变速度并使用transform.translate,没有结果


跳。我怎样才能让它跳跃呢?

有几件事可能是问题所在。确保取消选中IsMotional框。也有可能是角色在跳跃,但是如果精灵导入的太大,你就看不到它了,也就是说:相对于大小,它跳跃的量非常非常小。您可以尝试打印更多有关角色位置的调试语句,以查看角色位置是否实际发生了变化。

OnCollisionCenter应该使用大写字母O,而不是小写字母。如前所述,永远不会输入OnCollisionCenter

这是唯一可能出错的代码问题,假设您实际正确地分配了其他变量。然而,可能存在多种与游戏对象相关的行为

地面标记是否应用于您认为您的跑步者与之碰撞的游戏obejct?如果没有,它就不会跳


你的跳投刚体质量很高吗?默认值为1时,它会跳得很高,但如果质量较大,则无法获得正确的力。

在代码中似乎是正确的,但不知道为什么不跳。顺便说一句,你可以试试这个代码 只需不使用AddForce并更改正在使用的检查即可

if (Input.GetButtonDown("Jump") && OnGround)
{
    rBody.velocity = new Vector2(rBody.velocity.x, jumpSpeed);
}
确保它在更新方法下,因为在更新方法中输入调用。如果您的“OnGround”图层检查是
完美它应该可以工作。

我遇到了同样的问题,经过数小时的调查,在我的情况下,它与代码无关,但下面的Unity bug在2020.1.6f1中仍然存在

出于某种原因,它干扰了我在您的案例getKeyCode.Space中的代码中检查的任何键输入


修复程序将编辑-项目设置-活动输入处理-选择两者。

很难说是什么问题。代码看起来是正确的。需要检查的事项:刚体不能是运动学的和活动的。它的质量是多少?也许字符位置是从其他代码设置的?如果增加力会发生什么?是否尝试设置断点和?OnCollisionCenter以大写字母O开头,否则永远不会调用它!这可能是问题所在吗?当此碰撞器/刚体开始接触另一个刚体/碰撞器时,会调用OnCollisionCenter,如果碰撞对象未连接碰撞器/刚体,它将不会抖动。作为旁注,建议在更新方法流中进行所有输入调用。有关更多信息,请参阅。感谢您的回复。它真的不能跳:我已经检查了位置,刚体也一切正常,不是运动学的。谢谢你的回复。我已更正OnCollisionCenter语法。地面的标记已正确指定。我已经为我正在实例化的每个瓷砖指定了一个标记,如果有问题,我不知道。物体质量是一,物体本身很小。