2016-04-28 3 views
0

Wenn eine Schaltfläche gedrückt wird, wird ein Aufnahmeknoten von der Position eines Zeichenknotens abgefeuert und in die x-Richtung verschoben. Wenn es mit einem Knoten kollidiert, verschwinden beide Knoten.Wie schießt man ohne Probleme schön?

func attackButton() { 

    _weapon.removeFromParent() 

    _weapon.position = CGPointMake(character.position.x, charater.position.y) 
    _weapon.startMoving() 
    addChild(_weapon) 
    character.throwWeapon() 
} 

Wenn diese Funktion ausgelöst wird, funktioniert es normalerweise ohne jedes Problem. Wenn ich jedoch jumpButton drücke, wodurch der Charakter in die Y-Richtung springen kann, und "attackButton", werden die Koordinaten des Charakters irgendwie beeinflusst. Der Charakter bewegt sich und rotiert manchmal. Aus meinem Code habe ich nie etwas geschrieben, das dazu führt, dass es sich in andere Richtungen bewegt. Das nervt mich. Ich kann keine Lösung finden, um das zu verhindern. Gibt es jemanden, der weiß, wie man das löst?

Antwort

1

Sie bieten weniger Code als ich in der Lage bin aus zu arbeiten, damit ich werde sagen, was ich denke, das passiert:

Die Waffe an der exakt gleichen Position wie der Charakter hervorgebracht wird, aber Es wird von der Physik-Engine sehr schnell aus dem Spiel genommen. Diese Positionskorrektur wendet Impulse auf den Charakterkörper an und lässt ihn rotieren.

Sie können dieses Problem auf zwei verschiedene Arten lösen:

  • Spawn die Waffe außerhalb des Charakters, oder ...
  • deaktivieren Kollisionen zwischen Waffe und Charakter.

Versuchen Sie, Ihre fünfte Zeile zu so etwas wie dies zu ändern:

_weapon.position = CGPointMake(character.position.x + character.size.width/2, charater.position.y) 
+0

Das funktioniert nicht .. Ist es, weil ich SKAction verwende? Normalerweise ist es eine gute Übung, SKAction zu verwenden, um eine Aufnahme zu machen, anstatt eine Methode in der Update-Methode zu schreiben. – bagels

+0

Ich glaube nicht, dass sich Ihr Problem auf die Verwendung von 'SKAction' bezieht. Versuchen Sie, die Waffe an einer anderen Stelle, nicht in der Nähe des Charakters, zu spawnen, um zu sehen, ob Ihr Problem gelöst wird. –

+0

Und ja, ich denke, 'SKAction' in diesem Szenario klingt nach einer guten Übung. Aber ich bin mir nicht sicher, weil ich Swift nicht kenne. –