/// <summary>
/// 初始化线
/// </summary>
/// <param name="vStartPoint">起始点</param>
/// <param name="vEndPoint">终点</param>
private void InitLine(GameObject vStartPoint, GameObject vEndPoint)
{
CreateLine(vStartPoint.transform.position, vEndPoint.transform.position);
}
/// <summary>
/// 根据坐标画一条直线
/// </summary>
/// <param name="vStart"></param>
/// <param name="vEnd"></param>
private void CreateLine(Vector2 vStart, Vector2 vEnd)
{
GameObject line = GameLoadTools.InstantiatePrefab(mUIView.LineOBj, mUIView.transform);
RectTransform vRect = line.GetComponent<RectTransform>();
vRect.position = GetBetweenPoint(vStart, vEnd);
vRect.rotation = Quaternion.AngleAxis(-GetAngle(vStart, vEnd), Vector3.forward);
var vDistance = Vector2.Distance(vEnd, vStart);
vRect.sizeDelta = new Vector2(5, Math.Max(1, vDistance));
line.transform.SetAsFirstSibling();
}
/// <summary>
/// 返回线的旋转
/// </summary>
/// <param name="vStart"></param>
/// <param name="vEnd"></param>
/// <returns></returns>
private float GetAngle(Vector2 vStart, Vector2 vEnd)
{
var vDir = vStart - vEnd;
var vDirV2 = new Vector2(vDir.x, vDir.y);
var vAngle = Vector2.SignedAngle(vDirV2, Vector2.down);
return vAngle;
}
/// <summary>
/// 返回线的坐标
/// </summary>
/// <param name="vStart"></param>
/// <param name="vEnd"></param>
/// <returns></returns>
private Vector2 GetBetweenPoint(Vector2 vStart, Vector2 vEnd)
{
return vStart + (vEnd - vStart) / 2f;
}