Я использую приведенный ниже код для создания фигур с помощью средства визуализации линии на основе количества точек. Для точек больше 3 (форма треугольника и т.д.) Первая и последняя точки не закрывают форму так, как это делают другие точки.
1. Как закрыть фигуры с более чем тремя точками без видимых пробелов?
2. Как я могу анимировать фигуру, чтобы рисовать линии в течение определенной продолжительности (возможно, используя сопрограмму)?
public class CircleDrawing : MonoBehaviour
{
[Tooltip("The radius of the circle, measured in world units.")]
public float Radius = 2;
[Tooltip("The number of vertices in the circle.")]
public int Points = 5;
[Tooltip("The color of the circle.")]
public Color Color;
private LineRenderer lineRenderer;
public void Awake()
{
lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
lineRenderer.material.color = Color;
lineRenderer.startWidth = lineRenderer.endWidth = 0.5f;
lineRenderer.positionCount = Points + 1; //+1 to close the shape
Draw();
}
private void Draw()
{
float angle = 0f;
for (int i = 0; i <= Points; i++)
{
float x = Radius * Mathf.Cos(angle) + transform.position.x;
float y = Radius * Mathf.Sin(angle) + transform.position.y;
lineRenderer.SetPosition(i, new Vector3(x, y, 0.01f)); //Z is slightly behind the paddle so it draws in front
angle += (2f * Mathf.PI) / Points;
}
}
private void OnDestroy()
{
Destroy(lineRenderer.material);
}
}