您可以使用Transform屬性旋轉Unity中的任何可視對象。 LineRenderer
是一個例外。您無法使用transform屬性移動或旋轉它。移動並旋轉具有變換屬性的LineRenderer
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
的行爲與上述腳本和沒有腳本。現在位置正在啓用上面的腳本,但旋轉不是。
我不熟悉的團結,但人們會認爲像'newBeginPos = transform.rotation * newBeginPos'? –
不是。有一個'GetPosition'函數,我現在正在尋找'GetRotation'函數,該函數不存在。至於你的建議,它不應該工作,因爲你需要旋轉LineRenderer和它所附加的GameObject以獲得旋轉的偏移量。現在,你只是乘上這個GameObject的位置和旋轉。我也試過了,它只讓LineRenderer消失。 – Programmer
我可以想到的一些方式,但可能無法正常工作的是有2個空的gameobjects(linerenderer的子節點),一個在線渲染器的每一端,使用線渲染器的變換旋轉旋轉這些對象,然後將這些gameobjects位置應用到線渲染器結束。 – Lestat