Unity - Box Collider无法正常工作

时间:2017-05-13 12:38:43

标签: unity3d unity5

enter image description here

我的场景中有2个Box Colliders(绿色方框)和一个球。每当球接触到更大的Box Collider 时,玩家就会死亡并且游戏结束。但是,如果球在较小的对撞机上(就像它在图片中一样),那么玩家就可以了,游戏继续运行。

问题

当我从高处投球时,有时球会碰到较大的对手(可能是因为它的动量)而且我的球员死了。正如我所说,这并不总是会导致不可预测的结果。

解决这个问题的方法

我添加了rb2d.velocity = Vector2.zero;,以便在它与较小的Collider发生碰撞时立即停止。但它没有用。

light 是与Game对象关联的tag,其中附有较小的Box Collider。

private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("light"))
        {

            Debug.Log("collision");
            rb2d.velocity = Vector2.zero;
            return;
        }
        // Zero out the ball's velocity
        rb2d.velocity = Vector2.zero;

        Debug.Log("gameovercollision");
        // If the ball collides with something set it to dead...
        isDead = true;
        //...and tell the game control about it.
        GameController.instance.PlayerDied();
   }

我甚至尝试从相同的高度释放球,但仍然是行为无法预测。

日志

  

gameovercollision   UnityEngine.Debug:日志(对象)   Ball:OnCollisionEnter2D(Collision2D)(在Assets / Scripts / Ball.cs:63)

     

碰撞
  UnityEngine.Debug:日志(对象)   球:OnCollisionEnter2D(Collision2D)(在Assets / Scripts / Ball.cs:54)

  • 这种行为的原因是什么?

  • 为什么小型对撞机不能完美阻挡球?

  • 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

很可能是因为球的速度足以在单个固定时间步后进入两个碰撞器。

尝试降低项目设置下的Fixed Timestep值 - >时间和/或将球的刚体2D的Collision Detection字段设置为Continuous