如果不在 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
这应该适合你。
我尝试使用 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
这应该适合你。