Universelle 2D-Spielelemente und absolute Knotenpositionierung

Ich habe eine Frage zuuniversal game assets undabsolute Positionierung einesSKNodes imSprite Kit (iOS 8 +).

Ich werde versuchen, mein Problem anhand eines Beispiels wie folgt darzustellen::

Stellen Sie sich ein @ v 2D Top-Down-Spiel mit einerSKSpriteNode welches ein Haus darstellt. Ein Haus hat mehrere KinderSKSpriteNodes die Stühle, Schreibtisch, Sofa usw. darstellen

Ich habe 3 Versionen des Hausvermögens:

1x - 200 x 200px (IPads ohne Netzhaut),2x - 400 x 400px (Retina iPhones und iPads),3x - 600 x 600px (iPhone 6 Plus).

Wichti: Untergeordnete Knotenpositionen (Stühle, Schreibtisch usw.) sind in einem @ definier .plist file. So etwas wie dieses (JSON-Darstellung):

children: [
    {
        position = {20,20};
    },
    ...
]

Da die Position in Punkten und nicht in Pixeln definiert ist, wird alles wie erwartet entsprechend der Größe des Gerätebildschirms positioniert. Zum1x Geräte die Position bleibt{20,20}, zum2x Position ist{40,40} und für3x die Position ist{60,60}.

Proble:

Das Problem ist, dass200x200px und400x400px Vermögenswerte sindway to small für iPad-Geräte, um auf allen Geräten ein ähnliches Erscheinungsbild zu erzielen.

Frag:

Wie kann ich Assets erfolgreich so präsentieren / importieren, dass ich auf allen Geräten / Bildschirmgrößen ein ähnliches (wenn nicht gleiches) Erscheinungsbild erzielen kann, ohne die Positionierung der untergeordneten Knoten zu beeinträchtigen?

Meine dauert:

Nimm :

Ich könnte einfach das vorhandene @ verwend400x400px Assets auf iPad-Geräten ohne Netzhaut und600x600px Assets auf Retina iPad-Geräten für den Hausknoten, aber die Positionierung eines untergeordneten Knotens würde unterbrochen. Dies liegt daran, dass sich der Wert der untergeordneten Position nicht ändern würde und immer noch @ wär{20,20} und{40,40} für iPad-Geräte, während das Vermögen größer wäre. Dies würde zu ungenauen untergeordneten Positionen in Bezug auf den Hausknoten führen.

Nimm :

Ich könnte auch das @ skalierSKScene Größe (Zoomeffekt) bei Verwendung des normalen200x200px und400x400pxssets in der Größe "@" für iPad-Geräte. Dies funktioniert und hält die Positionierung der untergeordneten Knoten aufrecht, aber die gerenderte Qualität der Szene / der Assets ist nicht so gut, wie sie sein sollte. Auch das fühlt sich an wie ein Hack und das wollen wir nicht.

Take 3:

Ich könnte auch doppelt so große Assets für iPad-Geräte verwenden und die Position der untergeordneten Knoten zur Laufzeit verdoppeln. In diesem Fall würde ich ein @ verwend400x400px Asset für iPad-Geräte ohne Netzhaut und ein neues800x800px Asset für Retina iPad-Geräte. Dies sieht zwar gut aus und hält die Positionierung der untergeordneten Knoten aufrecht, es scheint jedoch ein wirklich großer Hack zu sein, der die Position der untergeordneten Knoten zur Laufzeit wie folgt festlegt:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    position.x *= 2.0f;
    position.y *= 2.0f;
}

Vielen Dank, dass Sie sich die Zeit genommen haben, die Frage zu lesen!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage