Physics2D.IgnoreLayerCollision 不起作用,尽管检查 (Physics2D.GetIgnoreLayerCollision) 表示层相互忽略。
代码相当简单,问题可能不相关,因为 Physics2D.GetIgnoreLayerCollision(7, 8) 显示层相互忽略,就像编码一样。 但是在 Physics2D.IgnoreLayerCollisions(7, 8, true) 被触发后,我的玩家(位于第 7 层)仍然与敌人(位于第 8 层)发生碰撞。仅供参考:脚本附在敌人身上。
我对编码很陌生,所以我不知道这里要考虑的所有事情。我的猜测是,这可能是由引擎 (Unity) 中的设置而不是代码本身引起的问题,但我还没有找到任何可能导致此问题的原因。我看到一些类似的问题是由平台效应器上的碰撞遮罩引起的,但由于我不使用没有帮助的效应器。
有什么想法可以导致碰撞器不忽略彼此,尽管这些层可能会忽略对方?
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.name.Equals("Player"))
{
StartCoroutine("BecomeInvincible");
}
}
IEnumerator BecomeInvincible()
{
Physics2D.IgnoreLayerCollision(7, 8, true);
yield return new WaitForSeconds(2f);
Physics2D.IgnoreLayerCollision(7, 8, false);
}