Unity - OnCollisionStay2D 无法正常工作

1 2d unity-game-engine

我希望我的角色在按下 S 时忽略正在碰撞的图层(就像在《Gun Mayhem》中,当您在与某个图层碰撞时按下向下键时,角色会忽略与该图层的碰撞)。问题是这些OnCollisionStay2D功能仅在我移动时才起作用。因此,如果我的角色正在移动,我只能忽略与正在碰撞的图层的碰撞。否则,它不起作用。这是我为了让角色忽略碰撞而编写的代码:

void OnCollisionStay2D(Collision2D c)
{
    Debug.Log("COLLISION");
    if (Input.GetKeyDown (KeyCode.S) || Input.GetKeyDown (KeyCode.DownArrow))
    {
        Physics2D.IgnoreCollision (GetComponent<Collider2D> (), c.gameObject.GetComponent<Collider2D> ());
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

在角色刚体2d 上,将“睡眠模式”设置为“永不睡眠”。这将使您的角色能够在每一帧中检测到碰撞,而不管运动如何。

https://docs.unity3d.com/ScriptReference/Rigidbody2D-sleepMode.html