using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System;
[RequireComponent(typeof(LineRenderer))]
public class DrawCircle : MonoBehaviour
{
[Range(0, 50)]
public int segments = 50;
public bool circle = true;
[Range(0, 50)]
public float xradius = 15;
[Range(0, 50)]
public float yradius = 15;
LineRenderer line;
public float drawSpeed = 0.3f;
void Start()
{
line = gameObject.GetComponent<LineRenderer>();
line.positionCount = (segments + 1);
line.useWorldSpace = false;
StartCoroutine(CreatePoints());
}
IEnumerator CreatePoints()
{
if (circle == true)
yradius = xradius;
float x;
float z;
float change = 2 * (float)Math.PI / segments;
float angle = change;
x = Mathf.Sin(angle) * xradius;
line.SetPosition(0, new Vector3(x, 0.5f, 0));
for (int i = 1; i < (segments); i++)
{
x = Mathf.Sin(angle) * xradius;
z = Mathf.Cos(angle) * yradius;
yield return new WaitForSeconds(drawSpeed);
line.SetPosition((int)i, new Vector3(x, 0.5f, z));
angle += change;
}
}
}
При запуске игры я хочу, чтобы она начиналась с одной линии с индексом 0, проведенной уже из центра круга.Поэтому я добавил эти две строки перед циклом:
x = Mathf.Sin(angle) * xradius;
line.SetPosition(0, new Vector3(x, 0.5f, 0));
Перед добавлением этих двух строк цикл for был:
for (int i = 0; i < (segments + 1); i++)
Но теперь я хочу начать цикл с индекса 1, такЯ попытался:
for (int i = 1; i < (segments); i++)
Но это не полный раунд:
![circle](https://i.stack.imgur.com/G1tjs.jpg)
Рисунок круга движется по часовой стрелке.