Unity - Box Collider 无法正常工作
Unity - Box Collider not working properly
我的场景中有 2 个盒子碰撞器(绿色盒子)和一个球。每当球碰到更大的 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:Log(Object)
Ball:OnCollisionEnter2D(Collision2D) (at Assets/Scripts/Ball.cs:63)
collision
UnityEngine.Debug:Log(Object)
Ball:OnCollisionEnter2D(Collision2D) (at Assets/Scripts/Ball.cs:54)
这种行为的原因是什么?
为什么较小的 Collider 不能完美地停止球?
如何解决这个问题?
很可能是因为球的速度足够高,可以在一个固定的时间步后进入两个对撞机。
尝试在项目设置 -> 时间下减小 Fixed Timestep
值 and/or 将球的 2D 刚体的 Collision Detection
字段设置为 Continuous
。
我的场景中有 2 个盒子碰撞器(绿色盒子)和一个球。每当球碰到更大的 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:Log(Object) Ball:OnCollisionEnter2D(Collision2D) (at Assets/Scripts/Ball.cs:63)
collision
UnityEngine.Debug:Log(Object) Ball:OnCollisionEnter2D(Collision2D) (at Assets/Scripts/Ball.cs:54)
这种行为的原因是什么?
为什么较小的 Collider 不能完美地停止球?
如何解决这个问题?
很可能是因为球的速度足够高,可以在一个固定的时间步后进入两个对撞机。
尝试在项目设置 -> 时间下减小 Fixed Timestep
值 and/or 将球的 2D 刚体的 Collision Detection
字段设置为 Continuous
。