繁体   English   中英

在 c# unity 中不使用 OnCollisionExit 的情况下,我怎么知道一个对象不会与另一个对象发生碰撞?

[英]How do I know that an object is not colliding with another object without using OnCollisionExit in c# unity?

我尝试使用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我也希望它在不与对象碰撞时进行检测。

你必须重新组织你的介绍,因为它非常复杂,知道你到底想要什么。

要检测碰撞或其缺乏,您必须使用碰撞器(可能放置额外的碰撞器但作为触发器)。 但是我的理解是您想将它们用作触发器。 在 Collider2D 组件上,您可以设置值 isTrigger。 设置它会使对撞机仍然工作,但不是物理上的(其他对撞机可以通过它)。 在对撞机上设置并使用: https : //docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerExit2D.html

那应该对你有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM