2016-12-31 5 views
1

Dies ist eine Frage hinsichtlich der Best Practice für die Implementierung. Als Beispiel werde ich auf ein einfaches Spiel namens Pixel Claw verweisen.Swift SKSpriteNode: Komplexe Sprite Texturen?

Angenommen, ich hatte eine SKSpriteNode verwandt mit der Klaue von Pixel Klaue, in das, was die SKSpriteNode könnte ‚‘ Halten ‚‘ ist variabel (aber endlich in Möglichkeiten, zum Beispiel vier verschiedene Objekte).

Was der Knoten SKSpriteNode hält, hat keine eigene Agentur.

So meiner Frage ist: ist es besser, verschiedene Texturen zu verwenden, wie zum Beispiel eine Klaue, ein Halteklaue Objekt a, ein Halteklaue Objekt b, usw. oder zwei SKSpriteNode s und die Position der SKSpriteNode mit der Klaue Textur neben seinen an die SKSpriteNode mit einer Objekttextur?

Ich mache kein Krallenspiel, es war nur das erste Beispiel, das mir in den Sinn kam, wo beide plausible Lösungen sein könnten. Ersteres ist einfacher - wechseln Sie einfach die Textur, wobei letztere generalisierbarer ist.

Wenn letzteres die beste Lösung ist, wie kann man die Bewegungen der beiden Sprites "paaren"?

Antwort

1

Ich würde den zweiten Ansatz verwenden, besonders wenn die Objekte a und b irgendwann aus der Klaue herausfallen können.

Sie sollten die Textur einer Klaue, die Textur von Objekt a und die Textur von Objekt b erstellen.

Um die Objekte synchron mit der Klaue zu bewegen, fügen Sie einfach das Objekt als Kind des Klauenknotens hinzu. Auf diese Weise bewegt sich die Klaue, wenn sich das Objekt bewegt!

Beachten Sie, dass Sie vor dem Hinzufügen des Objekts als untergeordnetes Element sicherstellen müssen, dass das Objekt kein übergeordnetes Objekt hat. Wenn dies der Fall ist, müssen Sie es aus dem übergeordneten Objekt entfernen, bevor Sie es als Kind der Klaue hinzufügen. Das gleiche gilt, wenn Sie das Objekt von der Klaue "loslassen": Sie müssen zuerst das Objekt von seinem Elternteil (der Klaue) entfernen und es dann als Kind des gewünschten Elternteils hinzufügen.

+0

Das ist eine sehr aufschlussreiche Antwort, ich erkannte nicht Eltern/Kind-Beziehung für 'SKSpriteNode' funktioniert so. Könnten Sie vielleicht Pseudo-Code zur Verfügung stellen? – SumNeuron

+0

@SumNeuron Der schwierigste Teil ist nur Texturen wirklich zeichnen. Sie rufen zuerst 'object.removeFromParent()' auf, um sicherzustellen, dass es kein übergeordnetes Objekt hat. Rufen Sie dann 'claw.addChild (object)' auf, um das Objekt als untergeordnetes Element hinzuzufügen. Sie müssen auch die Position und die Ankerpunkte von "Objekt" festlegen, um sicherzustellen, dass es an der richtigen Stelle ist. Sie brauchen nicht einmal eine if-Anweisung. – Sweeper

Verwandte Themen