2017-01-26 2 views
1

Ich habe eine Szene mit mehreren GameObjects mit x-y-z-Position. Ich bin in 2D, also wird das z nicht benutzt.Gameobjects Positionsänderung mit der Auflösung

Vorerst arbeitete ich mit der Auflösung 1024/768 und wenn ich ein Gameobject wie hinzufügen:

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

Es ist in Ordnung, das Gameobject ist in der richtigen Position auf meiner Szene.

Aber nox, ich versuche, die Auflösung zu ändern (1920/1080) und alle meine GameObjects sind weit oben rechts aus meiner Kamera bewegt.

Was ist das Problem? Wie kann ich das beheben?

Für mich, wenn ich die Auflösung ändern, die 0-0-0 Änderung für meine GameObjects .... und etwas Seltsames, Wenn mein GameObject einen LineRenderer mit Positionen hat, sind sie auf allen Auflösungen gut ...

Edit: Dies ist die Funktion, die ich für meine Gameobjects generieren verwenden, ist es eine Galaxie Generator:

   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; 
        } 
       } 
      } 

Dies ist die Szene, die ich in 1024/768 sehen, mit meiner Kugel und Gameobjects in rosa LineRenderer zwischen ihnen: enter image description here

Das ist was Ich sehe in 1920/1080, LineRenderer sind immer in der gleichen Position, aber Gameobjects abrücken: enter image description here

+0

Können Sie mehr Code bereitstellen? Geben Sie auch an, ob Sie eine perspektivische oder orthographische Kamera verwenden und wie ändern Sie die Auflösung? – Eddge

+0

Mehr Code wie was? Ich benutze eine perspektivische Kamera, und ich ändere die Auflösung im Editor, in der Spielansicht –

+0

Zeige den ganzen Code an dem Punkt wo dieser aufgerufen wird und die ganze Funktion in der er ist. Mit dem, was du zur Verfügung gestellt hast würde ich nicht sein in der Lage, Ihren Fehler zu reproduzieren. – Eddge

Antwort

0

Das Problem war, diese Zeile:

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

ich aus dem übergeordneten zog von Canvas, chnage xyz Positionen "Targets" bis 0 und es ist in Ordnung.

Verwandte Themen