unity实现UI线条一端固定另一端跟随鼠标点击位置并实时拉长或缩短
using UnityEngine;
public class Dzcontroller : MonoBehaviour
{
bool canCreate;
Vector2 verStart;//初始位置
Vector2 verEnd; //结束为止
[SerializeField]
Transform obj; //控制对象(image),pivot为(0.5f,0)
Camera cam;
RectTransform canvas;
// Start is called before the first frame update
void Start()
{
canCreate = false;
cam = Camera.main;
verStart = obj.GetComponent<RectTransform>().anchoredPosition;
canvas = transform.GetComponent<RectTransform>();
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
canCreate = !canCreate;
}
if (canCreate)
{
Vector2 screenPos = Camera.main.WorldToScreenPoint(Input.mousePosition);//世界坐标转屏幕坐标
Vector2 localPos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas, screenPos, cam, out localPos);//屏幕坐标转UI坐标
verEnd = localPos;
Change(obj, verStart, verEnd);
}
}
void Change(Transform trans, Vector2 start, Vector2 end)
{
float distance = Vector2.Distance(start, end); //两点距离
trans.GetComponent<RectTransform>().sizeDelta = new Vector2(5, distance);//设置高度
trans.rotation = Quaternion.LookRotation(Vector3.forward, end - start); //跟随鼠标点击位置
}
}
运行结果如下: