OnCollisionEnter2D 被平台效应器调用,即使我没有与之发生碰撞

OnCollisionEnter2D is being called with platform effector even though I haven't collided with it

我有一个移动平台脚本。我的平台被冻结,除非我与它发生碰撞,然后它开始移动。我有一个平台效应器,所以我可以从它下面跳上它而不会撞到我的头。 然而 OnCollisionEnter2D 正在被调用,即使我在它下面并且没有与单向碰撞发生物理碰撞。就好像是触发器一样。

   private void OnCollisionEnter2D(Collision2D collision)
    {
        
        if (collision.gameObject.GetComponent<Player>())
        {
            Debug.Log("On Collision Enter");
            //CameraFollow.instance.useFixedDeltaTime = false;
            Player = collision.gameObject;
            PlayerScript = Player.GetComponent<Player>();
            amountOfTimesPlayerCollided++;
        }

即使我的头刚好碰到碰撞器区域(没有在平台上跳跃),该方法也会被调用并且“On Collision Enter”会被记录到控制台中。 我如何做到只有在我与平台发生物理碰撞时才调用 OnCollisionEnter2D?

谢谢! 我使用的是最新版本的 Unity 2021,但我很确定过去其他版本也发生过这种情况。

这个回调是sent when an incoming collider makes contact with this object's collider

我认为“接触”和“触摸”的含义相同,所以这是预期的行为。

only gets called when I physically collide with the platform?

我猜你想检测碰撞,所以你可能还关注碰撞发生时两个物体之间的velocity

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.GetComponent<Player>()
        && collision.relativeVelocity.magnitude > THRESHOLD)
    {
        ......
    }
}