您可以使用Transform属性在Unity中旋转任何可视对象。唯一的例外是
以下是我用来使其可移动的代码。
我尝试使用与旋转相同的方法,使其可以旋转,但是在获取偏移量的第一步中被卡住了,因为无法访问
如何获取
下面是一个展示有/没有上面脚本时
LineRenderer
。您无法使用Transform属性移动或旋转它。
LineRenderer
是使用SetPosition
或SetPositions
函数移动的,因此我设法通过Transform位置属性使其可移动,但我无法使其旋转。以下是我用来使其可移动的代码。
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
旋转角度或如何通过Transform属性旋转LineRenderer
?下面是一个展示有/没有上面脚本时
LineRenderer
行为的图像。启用上面的脚本后,位置正在工作,但旋转没有。
newBeginPos = transform.rotation * newBeginPos
这样的东西吧? - Mike MatGetPosition
函数来获取位置,现在我正在寻找不存在的GetRotation
函数。至于你的建议,它不应该起作用,因为你需要LineRenderer和它所附加到的GameObject的旋转才能得到旋转的偏移量。现在,你只是在乘以这个GameObject的位置和旋转。我也尝试过那样做,但只会使LineRenderer消失。 - Programmer