oygon Collider2D 的意思是多边形碰撞。如果我们想做一些不规则的按钮点击事件,可能就要用到它。比如点击地图中的某个区域,因为地图的区域肯定是无规则如果还是用NGUI的矩形来监听按钮那么效果肯定不好。
如下图所示,我分别创建两个UITexture 一个添加了BoxCollider 一个添加了Polygon Collider2D 为毛 BoxCollider 就可以在Scene视图中看到绿色的矩形区域,而Polygon Collider却看不到Polygon Collider 的多边形区域?
经过一番检查发现,原来是NGUI默认创建的贴图和精灵的scale 都是1, 而所有的Collider都是根据GameObject的scale去算的。所以它太小了,小到了你的眼睛都完全看不到。为了方便编辑还是写一条简单的脚本来创建Polygon Collider2D吧。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
using
UnityEngine
;
using
System
.
Collections
;
using
UnityEditor
;
public
class
NewBehaviourScript
:
Editor
{
[
MenuItem
(
"NGUI/Attach/PolygonCollider2D"
)
]
static
void
AddPolygonCollider2D
(
)
{
if
(
Selection
.
activeObject
!=
null
)
{
foreach
(
GameObject
go
in
Selection
.
gameObjects
)
{
UIWidget
widget
=
go
.
GetComponent
<
UIWidget
>
(
)
;
if
(
widget
!=
null
)
{
PolygonCollider2D
polygonCollider
=
go
.
GetComponent
<
PolygonCollider2D
>
(
)
;
if
(
polygonCollider
==
null
)
{
polygonCollider
=
go
.
AddComponent
<
PolygonCollider2D
>
(
)
;
}
Vector2
[
]
vectors
=
new
Vector2
[
4
]
;
int
widthHalf
=
(
widget
.
width
>>
1
)
+
20
;
int
heightHalf
=
(
widget
.
height
>>
1
)
+
20
;
vectors
[
0
]
=
new
Vector2
(
-
widthHalf
,
-
heightHalf
)
;
vectors
[
1
]
=
new
Vector2
(
widthHalf
,
-
heightHalf
)
;
vectors
[
2
]
=
new
Vector2
(
widthHalf
,
heightHalf
)
;
vectors
[
3
]
=
new
Vector2
(
-
widthHalf
,
heightHalf
)
;
polygonCollider
.
points
=
vectors
;
}
}
}
}
}
|
添加碰撞器的时候,选择一个或者多个UISprite 或者 UITexture 然后 NGUI->Attack->PolyonCollider2D。碰撞器增加完毕后,我故意宽高各多增加20像素,这样为了方便去编辑。
如下图所示,我们来编辑多边形碰撞器吧。我在mac系统上,按下Shift+鼠标 可以看到一个小绿点,用鼠标拖动它来编辑你的多边形,如果你想删除多边形的话,按下Command + 鼠标,这样会出现一个小红点,点击一下即可删除。总之多操作两下应该都能会,很简单。
你编辑的多边形,其实都是一堆顶点数组,如果你不像用上面的方式编辑,想通过数值直接编辑,那么如下图所示,在精灵的GameObject上,点击右上方的小按钮,选择Debug模式。
在下方,你就可以看到你所有多边形的顶点信息了,快快编辑它吧。
不过可惜的一点是NGUI现在的代码是不支持PolygonCollider2D的。原因是NGUI用的是3D射线,而PolygonCollider用的是2D射线,射线是需要每一帧Update都要去判断的,如果两个射线都要判断那么效率肯定会大打折扣
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29962043/viewspace-1309044/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29962043/viewspace-1309044/