Flipped x-scale bricht die Kollisionsabfrage ab (SpriteKit 7.1)

8

Ich benutze SKNodes xScale-Eigenschaft, um meine Sprites horizontal zu spiegeln. Jetzt, nach der Aktualisierung von iOS auf Version 7.1, verursacht der horizontale Flip, dass meine Objekte im Boden versinken. (Siehe Animation unten). Das Problem tritt nur bei der Eigenschaft xScale auf. Vertikale Flips funktionieren gut.

%Vor%

    
JKallio 17.03.2014, 12:25
quelle

3 Antworten

12

Ich bin überzeugt, dass dies ein Bug in SpriteKit ist.

Wie auch immer, hier ist eine Lösung für das Problem (Eigentlich ist dies eher ein Workaround als eine echte Lösung, aber ...): Das Sprite in einen Container-Knoten einbinden. Auch der Container-Knoten bleibt bestehen Der physicsBody, während der Kindknoten lediglich ein Grafikknoten ist. Auf diese Weise können Sie das Sprite mit xScale sicher spiegeln, ohne die Physik des Knotens zu beeinflussen.

%Vor%     
JKallio 17.03.2014, 14:13
quelle
6

Ich bin vor ein paar Tagen auf dieses Problem gestoßen. Ich wollte das Sprite basierend auf seiner Bewegung (rechts oder links) invertieren und stellte fest, dass die Einstellung xScale alle Kollisionen / Kontakte deaktiviert.

Allerdings habe ich diese Zeile jedes Mal verwendet, wenn ich die Eigenschaft xScale gesetzt habe und alles normal gegangen ist.

%Vor%     
ZeMoon 28.03.2014 06:52
quelle
0

Alternative Lösung

In meinem Fall bin ich normalerweise Unterklasse SKSpriteNode , um Knoten in meiner Szene darzustellen und dann ihr Verhalten (Animation und Bewegung) in der Unterklasse einzukapseln. Die Wrap-Sprite in Containerknoten -Lösung funktioniert in meinem Fall nicht, da ich Aktionen habe, die die Sprites-Textur animieren und auch das Sprite nacheinander verschieben.

Zum Beispiel:

%Vor%

Workaround

In meinem Fall habe ich das gelöst, indem ich diese Methoden meiner Klasse "Player" hinzugefügt habe:

%Vor%

Überschreiben Sie dann SKScene-Methoden:

%Vor%

Dies funktioniert, weil der Knoten-Flip deaktiviert wird, kurz bevor die Physik für die Szene simuliert wird. Die Knotenumschaltung wird dann angewendet, unmittelbar bevor der Rahmen gerendert wird.

    
Imran 17.03.2015 11:53
quelle