c# - Unity - 如何让游戏对象在碰到两个碰撞器时只发生一次碰撞

标签 c# unity3d collision-detection collider

您好,我有一个问题,到目前为止我还没有找到答案。我有两个彼此相邻的游戏对象,每个都有一个对撞机。现在,当第三个对象与其中一个游戏对象发生碰撞时,该第三个对象的方向/反弹会根据它接触到的游戏对象/碰撞器而采用不同的方向。当 gameObjects 被干净地击中时,这在大多数情况下工作正常,但当它在两个碰撞体的中间碰撞时,它会在中间移动一个方向,这会给我的游戏带来问题。

我想知道如何确保当任何其他对象与两者发生碰撞时,即当它击中两个游戏对象的连接时,只触发一个对撞机/碰撞(无论哪个)。

最佳答案

碰撞发生在帧的开头,因此您可以检测到碰撞并在 LateUpdate 中重置:

private bool hasCollided = false;
void OnCollisionEnter(Collision col)
{
    if(this.hasCollided == true){ return; }
    this.hasCollided = true;
}
void LateUpdate()
{
    this.hasCollided = false;
}

关于c# - Unity - 如何让游戏对象在碰到两个碰撞器时只发生一次碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40831775/

相关文章:

c# - 将字符串列表转换为数据表

iOS 不加载下一级

javascript - CannonJS 锁定特定轴上的旋转

c# - Unity Dropdown 从数据库中添加值

unity3d - 全息远程处理没有手关节

python - 防止角色离开屏幕

c# - 拐角处的圆线段碰撞

c# - 通用处理程序不返回值

C# - 从 C# 应用程序向 Google Chrome 发送消息

使用 7zip 的 C# 归档,一直卡在通配符调用上