代码之家  ›  专栏  ›  技术社区  ›  Vishal Shah

Unity 2D运动学刚体穿过动力学刚体

  •  0
  • Vishal Shah  · 技术社区  · 2 年前

    我正面临着一个奇怪的二维物理学与Unity的问题,如下面的GIF所示。

    红色对象是运动学的 绿色对象是动态的 粉红色的墙是静止的

    红色对象的脚本使用 .MovePosition() 向绿色物体移动

    为什么红色物体穿过绿色物体?我希望红色物体在绿色物体撞到墙上后停止,因为没有空间再往前走了。当绿色物体跳到红色物体的右边时,这个圆圈就更奇怪了。

    enter image description here

    0 回复  |  直到 2 年前
        1
  •  0
  •   Obscure021    2 年前

    运动学刚体的作用类似于 Transform.Translate

    他们通常忽略施加在他们身上的力,包括重力。但是,它们可以检测与其他刚体的碰撞。例如,在给定的场景中,红色对象将启动 OnCollision.... 功能。


    在这种情况下,运动学刚体是不合适的,但总是有一个变通方法。

    OnCollisionEnter 仍然在碰撞时调用,可以停止刚体:

    private void OnCollisionEnter(Collision collision)
    {
        // When a collision occurs, stop the Rigidbody's movement.
        rb.velocity = Vector3.zero;
    }