前言
需求是点击圆盘UI转动。最开始的想法是用UI的EventSystem系统,但是发现UI的默认外框都是方形的,无法准确的点击。
思路既然用不了UI的事件系统,那就使用collider2D来实现多边形效果。首先给UI添加Collider2D组件,然后把collider编辑成UI的形状,最后是编辑代码部分。
代码我这里是实现的是鼠标按住后会一直执行方法,抬起后停止。
void Update()
{
if (!isGameOver && Input.GetMouseButtonDown(0))
{
//核心代码 接收鼠标点的2Dcollider,其余实现代码可以选择性忽略
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if (hit.collider != null)
{
//判断点击的物体名字
if(hit.collider.name == small.name|| hit.collider.name == middle.name|| hit.collider.name == big.name)
{
go = hit.collider.gameObject;
go.GetComponent().isDown = true;
}
}
}
if (Input.GetMouseButtonUp(0))
{
if(go != null)
go.GetComponent().isDown = false;
}
}
在这里备注一下layerMask参数的用法。它的作用是指定检测某个层的碰撞器。比如1
关注
打赏