【问题标题】:Collisions between UI elements in UnityUnity中UI元素之间的冲突
【发布时间】:2016-04-04 10:07:16
【问题描述】:

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

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

【问题讨论】:

    标签: unity3d collision-detection unity3d-gui


    【解决方案1】:

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

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

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

    void OnTriggerEnter2D(Collider2D other) 
    {
        Debug.Log ("Triggered");
    }
    

    这将检测到碰撞。

    【讨论】:

    • 关闭重力只是为了防止UI元素掉落?或者对于实际的碰撞检测是否有必要?
    • 只是为了防止UI元素掉落。
    • 伙计,我正在使用 OnCollisionEnter 和 OnCollisionEnter2D,感谢您强调我们需要使用 OnTriggerEnter2D,这是我缺少的细节。我没有将重力更改为零,而是将其设为运动学,无需要求刚体进行任何其他计算。但是您的解决方案效果很好,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-09-10
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多