using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
[RequireComponent(typeof(LineRenderer))]
public class DrawCircle : MonoBehaviour
{
[Range(0, 50)]
public int segments = 50;
[Range(0, 50)]
public float xradius = 5;
[Range(0, 50)]
public float yradius = 5;
public bool minimumRequireRadius = false;
LineRenderer line;
private List<float> radiusList = new List<float>();
void Start()
{
HighestRadius(transform);
float highest = radiusList.Max();
float resultRadius = radiusList[5] / 4;
xradius = resultRadius;
yradius = resultRadius;
line = gameObject.GetComponent<LineRenderer>();
line.positionCount = segments + 1;
line.useWorldSpace = false;
CreatePoints();
}
void Update()
{
CreatePoints();
}
void CreatePoints()
{
float x;
float y;
float z;
float angle = 20f;
for (int i = 0; i < (segments + 1); i++)
{
x = Mathf.Sin(Mathf.Deg2Rad * angle) * xradius;
z = Mathf.Cos(Mathf.Deg2Rad * angle) * yradius;
line.SetPosition(i, new Vector3(x, 0, z));
angle += (360f / segments + 1);
}
}
private void HighestRadius(Transform root)
{
foreach (Transform child in root)
{
HighestRadius(child);
var rend = child.GetComponent<Renderer>();
if (rend != null)
{
var rends = child.GetComponent<Renderer>().bounds.size.x;
radiusList.Add(rends);
}
}
}
}
В этой части:
float highest = radiusList.Max();
float resultRadius = radiusList[5] / 4;
Я хочу получить наибольшее значение из списка, в данном случае это 407, и это немного странно. Когда я перебираю дочерние элементы в этом цикле HighestRadius, одно из значений размеров равно 407. Но все объекты даже не близки по размеру к 100.
Затем я хочу получить результатRadius:
float resultRadius = radiusList[5] / 4;
Так будет: float resultRadius = наивысший / 4;
Последнее, что нужно установить xradius и yradius в resultRadius и нарисовать круг. Но я не уверен, что деление на 4 — правильный способ сделать это.