使用Image组件连接两个点,画直线短一截的原因
问题描述
我画图表的时候,发现有时候直线会莫名其妙短一截。后来才知道,是因为,使用了,求距离的函数,并且,如果你恰巧使用的屏幕分辨率和自己编辑器里的不一样,就会出bug。
像下面这样。
解决办法:
关键代码:float length = (dot2.transform.localPosition - dot1.transform.localPosition).magnitude;
做好之后是这样的
代码如下:
public Image dot1;
public Image dot2;
public Image line;
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
DrawPic();
}
}
public void DrawPic()
{
line.transform.position = dot1.transform.position;
var lirect = line.GetComponent<RectTransform>();
float ange = SetAngle(dot1.transform.position, dot2.transform.position);
lirect.transform.localEulerAngles = new Vector3(0, 0, ange);
//方法一
//float length = Vector3.Distance(dot1.transform.position, dot2.transform.position);
//方法二
float length = (dot2.transform.localPosition - dot1.transform.localPosition).magnitude;
print(dot1.transform.position + "后:" + dot2.transform.position + ":" + length);
lirect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, length);
}
private float SetAngle(Vector3 from, Vector3 to)
{
var dirA = to - from;
var dirB = Vector3.right;
float an = Vector3.Angle(dirA, dirB);
float dir = (Vector3.Dot(dirA, Vector3.up) < 0 ? -1 : 1);
an *= dir;
return an;
}