您可以使用Transform属性旋转Unity中的任何可视对象。 LineRenderer
是一个例外。您无法使用transform属性移动或旋转它。
LineRenderer
或SetPosition
函数移动 SetPositions
,以便我managed使其可以通过变换位置属性移动,但我也无法使其旋转。
以下是我用来移动它的代码。
public Vector3 beginPos = new Vector3(-1.0f, -1.0f, 0);
public Vector3 endPos = new Vector3(1.0f, 1.0f, 0);
Vector3 beginPosOffset;
Vector3 endPosOffset;
LineRenderer diagLine;
void Start()
{
diagLine = gameObject.AddComponent<LineRenderer>();
diagLine.material = new Material(Shader.Find("Sprites/Default"));
diagLine.startColor = diagLine.endColor = Color.green;
diagLine.startWidth = diagLine.endWidth = 0.15f;
diagLine.SetPosition(0, beginPos);
diagLine.SetPosition(1, endPos);
//Get offset
beginPosOffset = transform.position - diagLine.GetPosition(0);
endPosOffset = transform.position - diagLine.GetPosition(1);
}
void Update()
{
//Calculate new postion with offset
Vector3 newBeginPos = transform.position + beginPosOffset;
Vector3 newEndPos = transform.position + endPosOffset;
//Apply new position with offset
diagLine.SetPosition(0, newBeginPos);
diagLine.SetPosition(1, newEndPos);
}
我尝试使用与之相同的方法使其能够旋转,但我陷入了获取偏移量的第一步,因为无法访问LineRenderer
的旋转变量但是有一个用于访问职位GetPosition
。
如何获得LineRenderer
轮换,或者如何从“转换”属性中转换LineRenderer
?
下面的图片显示了LineRenderer
的行为,包含和不包含上述脚本。现在位置正在使用上面启用的脚本,但旋转不是。
答案 0 :(得分:3)
您可以使用转换的localToWorldMatrix
:
void Start()
{
diagLine = gameObject.AddComponent<LineRenderer>();
diagLine.material = new Material(Shader.Find("Sprites/Default"));
diagLine.startColor = diagLine.endColor = Color.green;
diagLine.startWidth = diagLine.endWidth = 0.15f;
diagLine.SetPosition(0, beginPos);
diagLine.SetPosition(1, endPos);
}
void Update()
{
//Calculate new postion
Vector3 newBeginPos = transform.localToWorldMatrix * new Vector4(beginPos.x, beginPos.y, beginPos.z, 1);
Vector3 newEndPos = transform.localToWorldMatrix * new Vector4(endPos.x, endPos.y, endPos.z, 1);
//Apply new position
diagLine.SetPosition(0, newBeginPos);
diagLine.SetPosition(1, newEndPos);
}
答案 1 :(得分:0)
您可以将LineRenderer的useWorldSpace
属性设置为false,然后可以使用其转换组件来控制LineRenderer。
https://answers.unity.com/questions/39391/line-renderer-position.html