在项目中UI不规则碰撞遇到很少,Unity中也有不规则的碰撞组件(Polygon Collider 2D)但是这种组件只能接受2D射线碰撞,而NGUI的是3D射线碰撞,需要在UICamera中修改代码才能实现。 这篇文章讲的不是这种碰撞,我要说的的方法不用修改代码,步骤如下:
1、让美术个你要的形状面片
这个就是我美术帮我做的扇形面片
2、然后再在面片上添加Mesh Collider组件
3、添加Camera 并添加UICamera脚本
这个是我添加的摄像机,我将它的Depth设置为1,优先级比UI事件的摄像机要高。
这个就是正常的UI摄像机
4、将UICamera的 Event Type 设置为 3D World
这样这个面片技能接受NGUI的点击事件了。
注意:将UICamera的 Event Type 设置为 3D World 是为了能够区分重叠的碰撞面片,这是要想点击最上面就可以改变位置的Z轴来实现。 还有就是UI事件根据Depth来判断点击到哪个Widget,这时就有两个UICamera来接受事件了 当这两个碰撞重合该如何处理呢?这时需要设置Camera的Depth,Depth大的优先。