已知两个坐标点用预制绘制线段

以前有遇到过这个问题:已知两个坐标点绘制线段。看到这个问题的时候,第一想法是计算两点的距离、角度,通过旋转角度来解决这个问题。

但是后来才发现可以用向量来解决。

 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);
    }

解决问题的方法有很多,如果你有更好的方法,欢迎相互讨论。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容