我目前正在统一开发一种游戏,其中行星绕太阳旋转。我需要画出显示轨道路径的圆圈。这是我使用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);
}
当我放大游戏时。线条明显变大了。但我希望它们保持相同的宽度。我试图通过在camera类中执行以下代码来做到这一点。
// 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;
}
}
问题在于某些线确实会随着相机的缩放而缩放,而有些则不会。但是,如果我在“场景”视图上四处走动,则线条有时会更新。好像它应该更改大小,但是在更新之前忘记了。
到目前为止,如有必要,我可以向您发送游戏文件。但是,我觉得有一种更明显的方法可以实现……还有另一种方法可以使线性渲染器绘制的线条具有恒定的宽度,而与相机的变焦无关