歡迎加入Unity業内qq交流群:956187480
public class NewBehaviourScript : MonoBehaviour
{
Vector3 v; //圓心
float R; //半徑
int positionCount; //完成一個圓的總點數,
float angle; //轉角,三個點形成的兩段線之間的夾角
Quaternion quaternion; //Quaternion四元數
LineRenderer line; //LineRenderer元件
void Start()
{
v = new Vector2(0, 0);
R = 6;
positionCount = 180;
angle = 360f / (positionCount - 1);
line = GetComponent<LineRenderer>();
line.positionCount = positionCount;
}
void Update()
{
DrawCircle();
}
void DrawCircle()
{
for (int i = 0; i < positionCount; i++)
{
if (i != 0)
{
//預設圍着z軸畫圓,是以z值疊加,疊加值為每兩個點到圓心的夾角
quaternion = Quaternion.Euler(quaternion.eulerAngles.x, quaternion.eulerAngles.y, quaternion.eulerAngles.z + angle);
}
//Quaternion與Vector3的右乘操作(*)傳回一個将原有向量做旋轉操作後的新向量.列如:Quaternion.Euler(0, 90, 0) * Vector3(0.0, 0.0, -10) 相當于把向量Vector3(0.0, 0.0, -10)繞y軸旋轉90度,得到的結果為Vector3(-10, 0.0.0.0)
Vector3 forwardPosition = v + quaternion * Vector3.down * R;
line.SetPosition(i, forwardPosition);
}
}
}