获取鼠标当前点击的UI
if(RectTransformUtility.RectangleContainsScreenPoint(rectTransform, Input.mousePosition))
{return rectTransform.gameObject;
}
拖拽
在Update 中根据鼠标位置实时更新拖拽的图片位置。
itemDrag.transform.position = Input.mousePosition;
判断UI是否重叠
松开鼠标时,通过Rect.Overlaps(Rect) 判断两个UI是否重叠。
画矩形
Vector3[] fourCorner = new Vector3[4];
rectTransform.GetWorldCorners(fourCorner);
Vector2 rectRange = new Vector2(Mathf.Abs(fourCorner[2].x - fourCorner[0].x), Mathf.Abs(fourCorner[2].y - fourCorner[0].y));
return new Rect(fourCorner[0], rectRange);
判断
rectAdsorb.Overlaps(rectDrag)
或
rectDrag.Overlaps(rectAdsorb)
吸附
根据可吸附图片的位置设定拖拽图片的位置。
itemDrag.transform.SetParent(itemAdsorb.transform);
itemDrag.transform.localPosition = Vector3.zero;
效果
拓展
Unity3D 随机颜色(RGB/HSV)_random.colorhsv()-CSDN博客文章浏览阅读5.7k次,点赞2次,收藏20次。Unity3D 随机颜色(RGB/HSV)前言 Unity中颜色这块儿有RGB模式和HSV模式,之前大多数用的都是RGB模式,对于颜色这块儿也没有详细的去了解。后来项目涉及到,要图片饱和度一定,且可以随机变换颜色,如下动图效果(使用RGB模式)。但是这样改的话,R、G、B三个值都在变化,不好确保它饱和度不变,只变颜色。所以,就想着用HSV模式试试看, 把颜色面板的RGB模式切换为HSV模式(如下图)..._random.colorhsv()https://blog.csdn.net/WenHuiJun_/article/details/119057959