我一直试图做到这一点,以便当我按下一个键时,所有对玩家和墙壁的碰撞都关闭。我知道Physics2D.IgnoreCollision
代码正在运行,但是玩家仍然无法穿过墙壁。
如果有帮助,玩家可以使用RigidBody2D
和BoxCollider2D
组件,而墙壁可以使用PlatformEffector2D
和BoxCollider2D
组件。
下面是我试图用来关闭碰撞的update函数中的代码。
if (Input.GetKeyDown (KeyCode.I))
{
foreach (var player in allPlayers)
{
BoxCollider2D playerCollider = player.GetComponent<BoxCollider2D>();
if (playerCollider != null)
{
foreach (var wall in allWalls)
{
BoxCollider2D wallCollider = player.GetComponent<BoxCollider2D>();
if (wallCollider != null)
{
Physics2D.IgnoreCollision (playerCollider, wallCollider, true);
}
}
}
}
}