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:
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.
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:
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);
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
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
Vielen Dank .. Ich weiß es zu schätzen :) – Alp