如果不使用 c# unity 中的 OnCollisionExit ,我如何知道一个对象没有与另一个

我尝试使用OnCollisionExit,但它没有检测到另一个对象的框collider 2D被禁用(当我禁用其他对象框碰撞器 2D 时,它没有检测到它停止碰撞)。collider我需要禁用其他对象,因为我将其用作拳击的范围指示器,并且我不希望它与其他对象交互(例如:玩家用范围指示器推开敌人)。我可以使用其他方法吗?


private void OnCollisionEnter2D(Collision2D collision)

{

    if (collision.collider.tag == "PunchRange")

    {

        Player.GetComponent<Fight>().PunchInRange = true;

    }


    if (collision.collider.tag == "KickRange")

    {

        Player.GetComponent<Fight>().KickInRange = true;

    }

}

private void OnCollisionExit2D(Collision2D collision)

{

    if (collision.collider.tag == "PunchRange")

    {

        Player.GetComponent<Fight>().PunchInRange = false;

    }

    if (collision.collider.tag == "KickRange")

    {

        Player.GetComponent<Fight>().KickInRange = false;

    }

}

我希望它能够检测到它不与对象碰撞,即使对象的框collider 2D被禁用。


MM们
浏览 82回答 1
1回答

弑天下

你必须重新组织你的介绍,因为它太复杂了,我不知道你到底想要什么。要检测碰撞或缺少碰撞,您必须使用碰撞器(也许放置额外的碰撞器但作为触发器)。然而我的理解是你想用它们作为触发器。在 Collider2D 组件上,您可以设置 isTrigger 值。设置它会使碰撞器仍然工作,但物理上不工作(其他碰撞器可以通过它)。
打开App,查看更多内容
随时随地看视频慕课网APP