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

当我收集宝石时,由于我的两个碰撞器,我的OnTriggerEnter函数都会调用两次,除非我从上方掉下或从下方跳到它,因为一个碰撞器先于另一个碰撞器就碰到它。

有没有一种方法可以将对撞机合并为一张支票,以使它们不重叠?

The box and circle colliders

The OnTriggerEnter2D function

最佳答案

假设您不想使Box和Circle碰撞器的大小不同。
将脚本添加到具有变量“ isUsed”的Gem中,并在发生冲突时将其设置为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;
          }
    }
}

10-08 05:42