【发布时间】:2017-01-23 01:21:45
【问题描述】:
我正在使用OnTriggerStay2D() 函数,该函数在对象位于对撞机内部时执行某些操作(不管怎样)。但是,有时我还有另一个,所以总共有 2 个对撞机可能会留在该对撞机内。两个对撞机不在同一个Game Object 上。
我正在尝试这样:
void OnTriggerStay2D(Collider2D other)
{
if (other.gameObject.CompareTag("Obj1"))
{
//do something
}
if (other.gameObject.CompareTag("Obj2"))
{
//do something else
}
}
但是做点别的事情当Obj1已经在里面时就永远不会发生。对于OnTriggerStay2D(),如何让一个碰撞器同时感知两个碰撞器?
编辑澄清:
OnTriggerStay2D() 仍然被调用。问题是代码永远不会到达if 语句,我必须做其他事情评论。
【问题讨论】:
-
你是说
OnTriggerStay2D如果有一个对象已经发生碰撞就不会再调用了?如果这是错误的,请编辑您的问题并进行更多解释。 -
不,我准确地说,做其他事情不会发生。这只意味着代码永远不会“进入”
if语句。 -
@Programmer 已编辑,很抱歉造成混淆。
-
没关系。您不应该期望在同一帧中调用 OnTriggerStay2D。
Collider2D other不能包含多个触发器信息。返回 Obj1 后,将在下一帧左右调用 OnTriggerStay2D 并返回 Obj2。这是您正在寻找的答案吗? -
这解释了很多,但对于我的对撞机
Obj2就像它甚至不存在一样。如何解决这个问题?我再次确保我没有拼错标签,游戏对象确实设置了标签等等
标签: c# unity3d collision-detection