天天看點

【Unity開發小技巧】使用LineRenderer畫圓

 歡迎加入Unity業内qq交流群:956187480

【Unity開發小技巧】使用LineRenderer畫圓
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);
        }
    }
}