2017-02-06 2 views
0

Ich habe gerade angefangen, mit Einheit zu spielen. Aber ich habe mich nicht um das Koordinatensystem gekümmert. Ich habe verschiedene Fragen/Antworten, Dokumente, beobachtete Tutorials gelesen. Wenn ich Dokumente lese, machen Welt, Ansichtsfenster und Bildschirmkoordinaten Sinn. Wenn ich jedoch versuche, diese zu verwenden, sind die Ergebnisse für mich völlig überraschend. Das lässt mich denken, dass mir etwas fundamental Wichtiges fehlt. Würde mir bitte jemand helfen?Kann ein Sprite programmgesteuert nicht in der unteren linken Ecke platzieren

Hier ist was ich versuche zu tun. Ich versuche ein Spiel zu bauen, das X Stück auf einem Brett der Größe MxN haben wird. Ich möchte Stücke PROGRAMMATISCH platzieren. Also, ich erwarte ein Stück in der unteren linken Ecke, wenn ich ein Stück auf (0,0) Bildschirmkoordinaten platziere. Aber zu meiner Überraschung wird das Stück ungefähr in der Mitte des Brettes platziert. Ich konnte nicht herausfinden warum.

Hier ist mein Code:

Vector3 BottomLeft = new Vector3 (0, 0, 0); 
GameObject token = Prefabs[0]; 
GameObject go = Instantiate (token, BottomLeft , Quaternion.identity); 
SpriteRenderer renderer = go.GetComponent<SpriteRenderer>(); 
renderer.sortingLayerName = "Foreground"; 
renderer.sortingOrder = 0; 

Und unten ist Ausgang des Code oben:

enter image description here

Wie man das Stück in der Mitte angeordnet ist, sehen. Mir ist klar, dass ich die Koordinaten nicht "normalisiert" habe. Unterhalb Version des Codes Bildschirmpunkte Welt wandelt Koordinaten:

Vector3 BottomLeft = new Vector3 (0, 0, 0); 
GameObject token = Prefabs[0]; 
GameObject go = Instantiate (token, Camera.main.ScreenToWorldPoint(BottomLeft), Quaternion.identity); 
SpriteRenderer renderer = go.GetComponent<SpriteRenderer>(); 
renderer.sortingLayerName = "Foreground"; 
renderer.sortingOrder = 0; 

Aber das Ergebnis ist immer noch ein wenig ähnlich der ersten, obwohl Stück leicht nach links platziert und nach unten.

enter image description here

ich das Stück erwartet, dass linke untere Ecke platziert werden, aber es ist nicht. Was mache ich falsch ?

Vielen Dank im Voraus.

EDIT:

Nachfolgend finden Sie die Standardeinstellungen für die Cam ist ich verwende:

enter image description here

Ich habe auch versucht es im Code zu setzen, Verfahren in Start wie folgt: (bitte nicht dass ich versuchte, entweder Linien und das Ergebnis ist immer noch das gleiche: [)

//  defaultCamera.transform.position = defaultCamera.ScreenToWorldPoint(new Vector3 (Screen.width/2f, Screen.height/2f, 0f)); 
//  defaultCamera.transform.position = defaultCamera.ScreenToWorldPoint(new Vector3 (-Screen.width/2f, -Screen.height/2f, 0f)); 
     //defaultCamera.transform.position = new Vector3 (-Screen.width/2f, -Screen.height/2f, -10f); 
     defaultCamera.transform.position = new Vector3 (0f, 0f, -10f); 

Antwort

0

ich Ihre Fliese denke richtig positioniert ist, aber die Kamera ist n ot.

Standardmäßig ist die Kamera so positioniert, dass der Mittelpunkt des Koordinatensystems in der Mitte des Bildschirms liegt. Versuchen Sie die Kamera neu zu positionieren (entweder programmtechnisch in der Start Methode oder einfach über die Unity GUI)

Hoffe das hat irgendwie geholfen. :)

+0

Danke für Ihre Antwort @Apfelbox. Ich habe versucht, was Sie vorgeschlagen haben, aber immer noch kein Glück. Die Kamera befindet sich bei (0,0, -10). Meine Spielansicht ist auf 1080x1920 eingestellt. Wenn dies der Fall ist, was sind die Koordinaten links unten? (0,0)? oder (-screen.width/2, -screen.height/2)? – Alp

+0

Ich bin momentan nicht an meinem eigenen Computer (wo Einheit installiert ist). Wenn ich in ein paar Stunden zu Hause bin und Ihr Problem immer noch nicht gelöst ist, werde ich mir das Problem nochmal ansehen - inzwischen viel Glück – Apfelbox

+0

Vielen Dank .. Ich weiß es zu schätzen :) – Alp

Verwandte Themen