2016-06-16 9 views
0

私はスイフトを背中の手術から解剖している間に勉強してきました。キー変更によるSKActionスプライトの振る舞い

問題の説明: 私はヒット時にスプライトを後方に押す機能があります。私が使用するとき

self.runAction(jumpBackSequence) 

私は望ましい動作を得る。 (スプライトが良い距離を押し戻される。)

enter image description here

今、私は次の連絡先に再び前進をforwardアクションを停止できるようにする必要があるので、私は「withKeyを」(使用するためにこれを更新するとき大幅dimishedさ

self.runAction(jumpBackSequence, withKey: "moveStraightLine") 

enter image description here

このアクションを作成My機能は以下の通りです:。

func pushBack(){ 
      self.removeActionForKey("moveStraightLine") 

      let height:CGFloat = 5 
      let jumpDistanceA:CGFloat = 20 
      let jumpDistanceB:CGFloat = 20 
      let duration:NSTimeInterval = 0.15 

      let jumpUp = SKAction.moveByX(0, y:height, duration:duration) 
      let moveBack = SKAction.moveByX(jumpDistanceA, y: 0, duration: duration) 
      let jStep1 = SKAction.group([jumpUp, moveBack]) 

      let jumpDown = SKAction.moveByX(0, y:(height * -1), duration:duration) 
      let moveBack2 = SKAction.moveByX(jumpDistanceB, y: 0, duration: duration) 
      let jStep2 = SKAction.group([jumpDown, moveBack2]) 

      let moveZombie1 = SKAction.moveToX(0, duration: spawnSpeed1() ) 
      let removeZombie1 = SKAction.removeFromParent() 
      let moveAndRemoveZombie1 = SKAction.sequence([moveZombie1, removeZombie1]) 

      let jumpBackSequence = SKAction.sequence([jStep1, jStep2, moveAndRemoveZombie1]) 

      self.runAction(jumpBackSequence) 

    //   self.runAction(jumpBackSequence, withKey: "moveStraightLine") 
} 

答えて

0

なぜこのような現象が起きたのか分かりませんが、runAction withKeyは実際にコードを指定された距離だけ移動していることに気付きました。画面幅の一部を使用するようにコードを更新したとき、キーの有無にかかわらず同じように動作します。これは実際にはSwiftのマイナーなバグかもしれません。私は、これは他の誰かに役立ちます願ってい

let jumpDistanceA:CGFloat = (self.scene?.size.width)! * 0.15 
let jumpDistanceB:CGFloat = (self.scene?.size.width)! * 0.15 

までの距離を更新し、問題を解決するには

。 敬具、 MPE

+0

時間の前にアクションを削除していると思います。キーを置いて、上の行self.removeActionForKey( "moveStraightLine")を削除すると、どのような振る舞いですか? –

+0

多くのありがとう、そのキーは、元の動きを停止します。私がスプライトを作成するとき、私はそれを同じキーでアクションを介して移動するように設定しました。ジャンプを元に戻すには、まずそれを削除する必要があります。奇妙なことに、画面幅の一部を使用するようにコードを更新すると、それが修正されました。私がバグやもっと深い素早い謎を見つけたのかどうかはわかりません。見て回答していただきありがとうございます。私は既にスタックオーバーフロー時に投稿する時間を取った皆さんから多くを学んでいます。 –

+0

異なるアクションで同じ名前を使用しているのはなぜですか?別の名前に変更してみてください –

1

あなたはmoveToは、ないMoveByメソッドを使用しているので、あなたはゾンビを移動するために後ろにアクションを追加するとき、あなたは今、最後に移動するX秒を取り、近い地点から始まると言っていますX秒はかかりません。すでに経過しています。あなたはあなたが見る効果のためにこれを望んでいません。 moveByを使用すると、ゾンビのスピードが一定に保たれます

関連する問題