统一线渲染器竞争宽度

时间:2018-11-06 22:54:15

标签: unity3d

我目前正在统一开发一种游戏,其中行星绕太阳旋转。我需要画出显示轨道路径的圆圈。这是我使用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;
    }
}

问题在于某些线确实会随着相机的缩放而缩放,而有些则不会。但是,如果我在“场景”视图上四处走动,则线条有时会更新。好像它应该更改大小,但是在更新之前忘记了。

到目前为止,如有必要,我可以向您发送游戏文件。但是,我觉得有一种更明显的方法可以实现……还有另一种方法可以使线性渲染器绘制的线条具有恒定的宽度,而与相机的变焦无关

0 个答案:

没有答案