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 updatevoid Start(){canCreate = false;cam = Camera.main;verStart = obj.GetComponent<RectTransform>().anchoredPosition;canvas = transform.GetComponent<RectTransform>();}// Update is called once per framevoid 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); //跟随鼠标点击位置}}
运行结果如下: