【问题标题】:OnTriggerEnter play only once as on collisionOnTriggerEnter 仅在碰撞时播放一次
【发布时间】:2016-03-11 19:51:15
【问题描述】:

我必须使用 rigidbody 和 box collider 来处理所有碰撞的游戏对象(我必须检测碰撞)。也就是说,我遇到了一些非常大的麻烦 由于 two 对象相互碰撞,2 次 onTriggerEnter 播放 我当然不想这样做。有什么办法可以控制吗?不删除脚本 和任何物体的刚体。

void OnTriggerEnter(Collider collidedAGV)
    {

     if (collidedAGV.tag == "cib" )
     {
    }
}

【问题讨论】:

  • 嗨 Mohammad - 首先您应该熟悉 Unity 中的 Layers 功能 - 这很棒。事实上,你必须每次都使用它。
  • 你的意思是我需要更改图层,然后检查触发器,但我将无法重置它。我猜
  • 值得一提的是,理论上,在这种情况下,您可以做的一件事就是获得两者的InstanceID,并且只有在您是较低 ID 时才采取行动!我真的不建议将其作为解决方案docs.unity3d.com/ScriptReference/Object.GetInstanceID.html
  • 为什么不推荐
  • 我已经使用层它工作正常,但我没有正确测试它!所以也许图层解决方案看起来可行,但必须大力测试

标签: c# unity3d


【解决方案1】:

您可以更改其中一个对象的标签,或者让脚本也检查它碰撞到的对象的名称:

void OnTriggerEnter ( Collider collidedAGV )
{
    if (collidedAGV.tag == "cib" && collidedAGV.name == "collided object name")
    {
        //Do stuff
    }
}

【讨论】:

  • 对我来说不可行
  • 你能解释一下原因吗?
猜你喜欢
  • 1970-01-01
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多