/// <summary>
/// 制作垂线
/// </summary>
public class MakeVertical : MonoBehaviour
{
/// <summary>
/// UIImage作UI垂线
/// </summary>
public RectTransform line;
/// <summary>
/// LineRender做世界垂线
/// </summary>
public LineRenderer perpendicularLineRenderer;
void Start()
{
SetChuizhiImage(line, Vector3.right, new Vector3(250, 0));
SetChuizhiLine(perpendicularLineRenderer, new Vector3(2, 3, -3), new Vector3(3, 1, 3), 10);
}
/// <summary>
/// 设置Line垂线
/// </summary>
/// <param name="perpendicularLineRenderer">线</param>
/// <param name="startPoint">被做垂线起点</param>
/// <param name="endPoint">被做垂线终点</param>
public void SetChuizhiLine(LineRenderer perpendicularLineRenderer, Vector3 startPoint, Vector3 endPoint, float mochang)
{
// 计算线b的起点和终点
Vector3 direction = (endPoint - startPoint).normalized;
Vector3 perpendicularDirection = new Vector3(-direction.y, direction.x, 0);
Vector3 perpendicularStartPoint = endPoint;
Vector3 perpendicularEndPoint = endPoint + perpendicularDirection * mochang;
// 绘制线b
perpendicularLineRenderer.startWidth = 0.005f;
perpendicularLineRenderer.endWidth = 0.005f;
perpendicularLineRenderer.positionCount = 2;
perpendicularLineRenderer.material = new Material(Shader.Find("UI/Default"));
perpendicularLineRenderer.SetPosition(0, perpendicularStartPoint);
perpendicularLineRenderer.SetPosition(1, perpendicularEndPoint);
}
/// <summary>
/// 设置UI垂线(line:过point点垂直与vector向量的直线)
/// </summary>
/// <param name="line">线</param>
/// <param name="vector">被做垂直之前的向量</param>
/// <param name="point">线的坐标</param>
public void SetChuizhiImage(RectTransform line, Vector3 vector, Vector3 point)
{
Vector2 direction = vector.normalized;
Vector2 perpendicularDirection = new Vector2(-direction.y, direction.x);
Vector2 perpendicularStartPoint = point;
line.anchoredPosition = perpendicularStartPoint;
line.rotation = Quaternion.Euler(0, 0, Mathf.Atan2(perpendicularDirection.y, perpendicularDirection.x) * Mathf.Rad2Deg);
}
}