我有一个带有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:
答案 0 :(得分:0)
问题在于这一行:
star.transform.parent = GameObject.Find ("Targets").transform;
我将父母从Canvas移出,chnage x-y-z位置是&#34;目标&#34; 0,等等。