Unity中UI元素之间的碰撞问题

4

如果我的画布在世界空间中呈现,我可以检测UI组件和游戏对象之间的碰撞。在这里,当画布呈现模式为屏幕空间叠加时,我试图找到两个UI元素之间(比如UI按钮)的碰撞。

我给我的UI按钮添加了盒状碰撞器组件,并尝试使用OnCollisionEnter2D和OnTriggerEnter2D方法。但是,碰撞没有被检测到。是否有一种方法来检测碰撞?

1个回答

8

这个问题不需要代码实现。然而我已经找出了一个解决方案。对于两个UI元素,你需要:

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

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

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

这将检测到碰撞。


关闭重力只是为了防止UI元素掉落吗?还是对实际的碰撞检测有必要? - LilaQ
这只是为了防止UI元素掉落。 - Sunil Nair
3
哥们,我一直在使用OnCollisionEnter和OnCollisionEnter2D,感谢你提醒我们需要使用OnTriggerEnter2D,这正是我所缺少的细节。我只需将重力设为零而不是改变它,我只是让它成为运动学的,无需要求刚体进行任何其他计算。但你的解决方案完全有效,谢谢你。 - Fernando Bonet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接