以前有遇到过这个问题:已知两个坐标点绘制线段。看到这个问题的时候,第一想法是计算两点的距离、角度,通过旋转角度来解决这个问题。
但是后来才发现可以用向量来解决。
private Transform _parentTran;
private GameObject _line;
private void Start()
{
Vector2 _startPos = new Vector2(100, 100);
Vector2 _endPos = new Vector2(200, 200);
//两个点的中心点(因为line的锚点是中心点,缩放或者改变大小是根据中心点变化的,
//也可以将锚点设置为居左或者居右,就可以用开始坐标或者结束坐标来实例化GameObject)
Vector2 _tempPos = (_startPos + _endPos) * 0.5f;
float distance = Vector2.Distance(_endPos, _startPos);//计算两点的距离
_line.transform.SetParent(_parentTran,false);
RectTransform _lineRect = _line.GetComponent<RectTransform>();
_lineRect.localPosition = _tempPos;
//向量,终点指向起点
_lineRect.right = (_endPos - _startPos).normalized;
//可以设置宽度,也可以是指scale
_lineRect.sizeDelta = new Vector2(distance, _lineRect.sizeDelta.y);
}
解决问题的方法有很多,如果你有更好的方法,欢迎相互讨论。
网友评论