Unity 中 UI 元素之间的冲突

Sun*_*air 2 collision-detection unity-game-engine unity3d-gui

如果我的画布在世界空间中渲染,我能够检测到 UI 组件和游戏对象之间的碰撞。在这里,当画布渲染模式是屏幕空间覆盖时,我试图找到两个 UI 元素(比如 UI 按钮)之间的冲突。

我向我的 UI 按钮添加了框碰撞器组件并尝试使用 OnCollisionEnter2D 和 OnTriggerEnter2D。但是,未检测到碰撞。有没有办法检测碰撞?

Sun*_*air 6

该问题不需要代码体。不过,我已经想出了一个解决方案。对于这两个 UI 元素,您需要:

  • 附加rigidbody2d组件
  • 附加一个盒子碰撞器组件
  • 禁用重力
  • 启用isTrigger复选框。

现在在附加到 UI 元素之一的脚本中:

void OnTriggerEnter2D(Collider2D other) 
{
    Debug.Log ("Triggered");
}
Run Code Online (Sandbox Code Playgroud)

这将检测到碰撞。

  • 伙计,我正在使用 OnCollisionEnter 和 OnCollisionEnter2D,感谢您强调我们需要使用 OnTriggerEnter2D,这是我缺少的细节。我没有将重力更改为零,而是将其设为运动学,无需要求刚体进行任何其他计算。但是您的解决方案效果很好,谢谢。 (3认同)