2016-04-17 10 views
0

私の単純なゲームの考え方は、サイズが大きくなり、一定のサイズに達した後、元のサイズに戻り、これが繰り返されるノードを主張します。私はそれを持っているので、画面に触れると、これが引き起こされます。私が最初に触れた後にもう一度触れた後には、サイズが大きくなったり小さくなったりしても、反対の動作に切り替えることができます。例えば、サイズが大きくなり、それがなくなる前にタップすると、それはとにかく減少します...これは私のコードです。私は何をする必要がありますか?乾杯!XCode、SpriteKit:タッチで2つのアクションをどのようにトリガーしますか?

import SpriteKit 

クラスGameScene:SKScene、SKPhysicsContactDelegate {

let player = SKSpriteNode(color: .blackColor(), size: CGSize(width: 50, height: 50)) 

override func didMoveToView(view: SKView) { 

    backgroundColor = UIColor.whiteColor() 

    self.player.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
    addChild(self.player) 

} 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    //SCALE// 

    let scaleUp = SKAction.scaleTo(6.0, duration: 1) 
    let scaleDown = SKAction.scaleTo(1.0, duration: 1) 

    let scaleUpGroup = SKAction.group([scaleUp]) 
    let scaleDownGroup = SKAction.group([scaleDown]) 

    let scaleUpAndDownSequence = SKAction.sequence([scaleUpGroup, scaleDownGroup]) 

    let loop = SKAction.repeatActionForever(scaleUpAndDownSequence) 

    self.player.runAction(loop, withKey: "scalingUpAndDown") 

} 

}

答えて

0

このための可能な解決策は、トグルスイッチのようなものとして、ブール値を使用することです。 "isReversed"という名前のvarを作成し、順序を入れ替えてシーケンスを作成します。

let scaleDownAndUp = SKAction.sequence([scaleDownGroup, scaleUpGroup]) 
let reverseLoop = SKAction.repeatActionForever(scaleDownAndUp) 

var isReversed = false 

if !isReversed { 
    self.player.removeActionForKey("scalingDownAndUp") 
    self.player.runAction(loop, withKey: "scalingUpAndDown") 
    isReversed = true 
} else { 
    self.player.removeActionForKey("scalingUpAndDown") 
    self.player.runAction(reverseLoop, withKey: "scalingDownAndUp") 
    isReversed = false 
} 

これは、画面をタップして正しいアクションを実行し、isReversedをその別の状態に切り替えると、isReversedをチェックします。

私はこれをテストしませんでしたが、何かが少しばかりオフになっていれば、一般的な考え方は健全であり、簡単に実装する必要があります。

+0

乾杯。トップマン。私はこれを後でチェックして、それが動作するかどうかを知らせます! –

関連する問題