Я сейчас разрабатываю игру в единстве, где планеты вращаются вокруг Солнца. Мне нужно нарисовать круг, который показывает путь по орбите. Вот код, который я сделал, чтобы нарисовать круги с помощью LineRenderer
LineRenderer line = moonOrbitTracks[ii].GetComponent<LineRenderer>();
line.SetVertexCount(segments + 1);
line.useWorldSpace = false;
line.SetWidth(1, 1);
line.widthMultiplier = trackWidth;
float x;
float z;
float angle = 20f;
for (int i = 0; i < (segments + 1); i++)
{
x = Mathf.Sin(Mathf.Deg2Rad * angle) *
(float)childMoons[ii].OrbitRadius;
z = Mathf.Cos(Mathf.Deg2Rad * angle) *
(float)childMoons[ii].OrbitRadius;
line.SetPosition(i, new Vector3(x, z, 0));
angle += (360f / segments);
}
когда я увеличиваю масштаб в игре. линии становятся больше, очевидно. но я хочу, чтобы они остались прежней ширины. я попытался сделать это, выполнив следующий код в классе камеры.
// Update is called once per frame
void Update () {
if (Input.GetAxis("Mouse ScrollWheel") > 0f) // forward
{
if (MainCamera.orthographicSize > 20)
{
MainCamera.orthographicSize = MainCamera.orthographicSize - (MainCamera.orthographicSize * 0.2f);
Star.trackWidth -= Star.trackWidth * 0.2f;
Planet.trackWidth -= Planet.trackWidth*0.2f;
}
}
else if (Input.GetAxis("Mouse ScrollWheel") < 0f) // backwards
{
MainCamera.orthographicSize = MainCamera.orthographicSize + (MainCamera.orthographicSize*0.2f);
Star.trackWidth += Star.trackWidth * 0.2f;
Planet.trackWidth += Planet.trackWidth * 0.2f;
}
}
проблема в том, что некоторые линии масштабируются с увеличением камеры, а некоторые - нет. но если я перейду на «сцену», строки будут иногда обновляться. как будто он должен был изменить размер, но забыл, пока не будет обновлен.
Я могу прислать вам, ребята, игровые файлы, если это необходимо. Тем не менее, я чувствую, что есть более очевидный способ сделать это ... есть ли другой способ, чтобы линии, нарисованные linerenderer, были постоянной ширины независимо от масштаба камеры