Ich habe ein SKView erstellt, das eine SKScene-Unterklasse wie folgt darstellt:
%Vor%Um den Ursprung des Koordinatensystems zu sehen, füge ich der Szene ein kleines 10x10-Quadrat hinzu.
%Vor%Sie können das grüne Quadrat in der unteren linken Ecke sehen:
Nach dem, was ich dachte, ist das SpriteKit-Koordinatensystem so beschaffen, dass der Ursprung immer im Zentrum liegt. Aber in der Szene ist der Ursprung in der unteren linken Ecke. Wenn ich einen untergeordneten Knoten zu {0,0} hinzufüge, erscheint er auch in der unteren linken Ecke.
Wenn ich einen SKSpriteNode hinzufüge und ihn {0,0} in der Szene positioniere, erscheint er in der unteren linken Ecke. Aber es ist zentriert um den Szenenursprung in der unteren linken Ecke (abgeschnitten von der Hälfte nach links und halb nach unten).
Aber jetzt wird es noch verwirrender. Wenn ich einen SKSpriteNode zu einem anderen SKSpriteNode hinzufüge, wird das Sub-Sprite im Elternteil zentriert.
Bedeutet das, dass das Szenen-Koordinatensystem anders arbeitet als das Sprite-Koordinatensystem?
Wiederholung:
Ist meine Szene falsch konfiguriert oder funktioniert das so?
So funktioniert es. Alle OpenGL-Ansichten (zumindest die 2D-Ansichten) haben ihren Ursprung in der unteren linken Ecke.
Die Position deiner Sprites ist auch korrekt. Beide liegen standardmäßig bei 0,0. Die Textur der Sprites wird basierend auf dem AnchorPoint-Faktor relativ zur Knotenposition gezeichnet. Der Standardwert ist 0,5, 0,5 platziert die Textur an der Position des Knotens.
Sie können den AnchorPoint der Szene in 0.5.0.5 ändern, wodurch die Sprites in die Mitte der Szene verschoben werden. Sie können auch den AnchorPoint des Sprites ändern, obwohl dies nicht empfohlen wird, da dies Auswirkungen auf die Rotation, die Skalierung, die Kollisionserkennung und die Position des untergeordneten Knotens hat.
Was ich getan habe, war, die Größe der SKScene, die angezeigt werden soll, auf bounds.size
des Viewcontrollers festzulegen, aus dem die Szene angezeigt werden soll. Etwas wie das:
Ich hoffe, das hat auch für dich funktioniert, wenn ich hier Fehler gemacht habe, lass es mich auch wissen :)
Tags und Links ios ios7 sprite-kit sknode skspritenode