Gameobjects位置变化,分辨率为

时间:2017-01-26 17:31:38

标签: unity3d

我有一个带有x-y-z位置的多个GameObjects的场景。我在2D中,因此不使用z。

目前,我使用分辨率1024/768,当我添加GameObject时:

GameObject star = GameObject.CreatePrimitive(PrimitiveType.Sphere);
Vector3 position = new Vector3 (x, y, z);
star.transform.localPosition = position;

没关系,GameObject在我的场景中处于正确的位置。

但是诺克斯,我试图改变分辨率(1920/1080)并且我的所有游戏对象都在我的相机右上方移动了。

问题是什么?我该如何解决这个问题?

对我来说,当我更改分辨率时,我的GameObjects的0-0-0更改......以及奇怪的东西,如果我的GameObject有一个有位置的LineRenderer,它们对所有分辨率都很好......

编辑:这是我用来生成我的GameObjects的函数,它是一个星系生成器:

             for(int i = 0; i < numberOfStars; i++) {
                bool checkPosition = false;

                while (!checkPosition) {
                    // Choose a distance from the center of the galaxy.
                    float distance = Random.Range(5.0f, (float) galaxySize / 2 - 5);

                    // Choose an angle between 0 and 2 * PI.
                    float angle = Random.Range(0.0f, 100.0f) * 2 * Mathf.PI;

                    Vector3 position = new Vector3 (Mathf.Cos (angle) * distance, Mathf.Sin(angle) * distance, 9);

                    if (! Physics.CheckSphere(position, 1)) {
                        GameObject star = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                        star.AddComponent<SolarSystem>();

                        star.name = i + "_" + PlanetNameGenerator.GenerateName();
                        star.GetComponent<SolarSystem>().name = i + "_" + PlanetNameGenerator.GenerateName();

                        star.transform.parent = GameObject.Find ("Targets").transform;

                        // On change le scale en random
                        float randomScale = Random.Range (0f, 0.5f);
                        star.transform.localScale += new Vector3(randomScale,randomScale,randomScale);

                        star.transform.localPosition = position;
                        star.tag = "SolarSystem";

                        checkPosition = true;
                    }
                }
            }

这是我在1024/768中看到的场景,我的Sphere GameObjects和它们之间的粉红色LineRenderer:enter image description here

这就是我在1920/1080看到的,LineRenderer始终处于相同位置,但GameObjects离开了:enter image description here

1 个答案:

答案 0 :(得分:0)

问题在于这一行:

star.transform.parent = GameObject.Find ("Targets").transform;

我将父母从Canvas移出,chnage x-y-z位置是&#34;目标&#34; 0,等等。