我目前正在尝试在 Unity 中创建一个 2D 游戏,我的玩家在他的上半部分有一个盒子碰撞器,在他的下半部分有一个圆形碰撞器;这可以平滑坡道和其他东西。
当我收集一颗 gem 时,我的 OnTriggerEnter 函数会因为我的两个碰撞器而调用两次,除非我是从上面落到它上面或从下面跳到它上面,因为一个碰撞器明显先于另一个碰撞器接触到它。
有没有办法将碰撞器合并到一个检查中,这样它们就不会重叠?
最佳答案
假设您不想让 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/