【问题标题】:OnTriggerEnter Calling TwiceOnTriggerEnter 调用两次
【发布时间】:2019-04-04 14:30:05
【问题描述】:

我目前正在尝试在 Unity 中创建一个 2D 游戏,我的 Player 在他的上半部有一个盒子碰撞器,在他的下半部有一个圆形碰撞器;这可以平滑坡道和其他东西。

当我收集宝石时,我的 OnTriggerEnter 函数会因为我的两个对撞机而调用两次,除非我是从上面掉到它上面或从下面跳到它上面,因为一个对撞机明显先于另一个碰撞它。

有没有办法将碰撞器组合成一个检查,使它们不重叠?

The box and circle colliders

The OnTriggerEnter2D function

【问题讨论】:

  • 如果您添加一些参考代码将有助于快速检查。

标签: c# unity3d triggers collider


【解决方案1】:

假设您不想让 Box 和 Circle 对撞机的大小不同。 向 Gem 添加一个具有变量“isUsed”的脚本,并在发生冲突时将其设置为 true。这样下次如果发生碰撞,就可以忽略了。

void OnTriggerEnter2D(Collision2D other)
{
    if(other.gameObject.CompareTag("gem")){
          GemScript gemScript = other.gameObject.GetComponent<GemScript>();
          if(!gemScript.isUsed){
           DO YOU STUFF HERE
           gemScript.isUsed = true;
          }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多