c# - OnTriggerEnter 调用两次

标签 c# unity3d triggers collider

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

当我收集一颗 gem 时,我的 OnTriggerEnter 函数会因为我的两个碰撞器而调用两次,除非我是从上面落到它上面或从下面跳到它上面,因为一个碰撞器明显先于另一个碰撞器接触到它。

有没有办法将碰撞器合并到一个检查中,这样它们就不会重叠?

The box and circle colliders

The OnTriggerEnter2D function

最佳答案

假设您不想让 Box 和 Circle collider 的大小不同。 向具有变量“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;
          }
    }
}

关于c# - OnTriggerEnter 调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55506630/

相关文章:

c# - 在带有 Linq 的 Entity Framework 中使用 LIKE "%{%}%"?

c# - Xml 序列化在简单类上因 NullReferenceException 而失败

postgresql - Postgres 触发器

sql - 创建一个触发器,在更新列时将值插入到新表中

C# 字符串拆分和合并

C# 版本的 WebForms 页面不工作,VB 版本是

c# - 如何让敌人不同时射击(2d 游戏)?

c# - 当多个碰撞器同时接触我的角色时,如何找到哪个具有相同标签的碰撞器首先接触我的角色

postgresql - 通过级联删除子记录时如何使父记录数据可用

c# - 从控件获取绑定(bind)对象