在制作功能时,偶尔会遇到使用不规则的按钮,碰撞检测当然也要做到与按钮的形状一致,但是我们的图片都是矩形的,所以需要我们单独设置与按钮形状一致的碰撞检测区域。
使用的组件:Button,Polygon Collider 2D,UguiImagePlus(继承Image)
UguiImagePlus.cs (Image扩展类)
using UnityEngine;
using UnityEngine.UI;
public class UguiImagePlus : Image
{
//声明多边形碰撞器组件
private PolygonCollider2D mCollider;
protected override void Awake()
{
base.Awake();
mCollider = GetComponent<PolygonCollider2D>();
}
public override bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera)
{
//判断触摸是否在圈出的多边形区域内
var inside = mCollider.OverlapPoint(screenPoint);
return inside;
}
}
创建一个Button删除Image组件,添加UguiImagePlus,拖动图片设置。
添加Polygon Collider 2D组件,然后设置不规则的区域。
经过以上设置,你已经制作一个与图片像素区域一致的碰撞检测区域了。