2017-02-22 9 views
0

私は画面上にノードがあるゲームを作成しています。プレイヤーが画面に触れるとノードは正常に機能しますが、プレイヤーがノードをタップしてアクションが発生したときに必要です。画面上でノードをタッチするのを止める方法は? SpriteKit

ここには何が起こっているのかのコードがあります。

var ballNode = SKSpriteNode(imageNamed: "balls.png") 

var touchLocation = CGPoint() 

override func didMove(to view: SKView) { 

ballNode.size = CGSize(width: 100, height: 100) 
ballNode.position = CGPoint(x: self.size.width*0.5, y: self.size.height*0.9) 

self.addChild(ballNode) 

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

let touch: UITouch = touches.first! 
let positionInScene = touch.location(in: self) 
let touchedNode = self.atPoint(positionInScene) 

touchLocation = touch.location(in: self) 

let moveDown = SKAction.moveTo(y: self.size.height*0.1, duration: 0.3) 
let moveUp = SKAction.moveTo(y: self.size.height*0.9, duration: 0.3) 
let moveSequence = SKAction.sequence([moveDown, moveUp]) 
ballNode.run(moveSequence) 
let pointOfTouch = touch.location(in: self) 
ballNode.contains(pointOfTouch) 

答えて

0

それは、この方法を行うことができます。

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

    if let touch = touches.first as UITouch! { 

     let touchLocation = touch.location(in: self) 
     if ballNode.frame.contains(touchLocation) { 

      let moveDown = SKAction.moveTo(y: self.size.height*0.1, duration: 0.3) 
      //let spin = SKAction.repeatForever(SKAction.rotate(byAngle: CGFloat(M_PI), duration: 1)) 
      //let spin = SKAction.repeat(SKAction.rotate(byAngle: CGFloat(M_PI), duration: 1), count: 3) 
      let spin = SKAction.rotate(byAngle: CGFloat(M_PI), duration: 1) 
      let moveUp = SKAction.moveTo(y: self.size.height*0.9, duration: 0.3) 
      let moveSequence = SKAction.sequence([moveDown, spin , moveUp]) 
      ballNode.run(moveSequence) 
     } 
    } 
} 

私はスピンアクションの行を追加しました。スピニングのために2つのコメント行があります。ちょうどあなたに最適なものを選択してください

+0

ありがとう、それは魅力のように動作します。 –

+0

あなたの歓迎ですが、これを正しい答えとして選択してください。昨日私の受け入れられた答えの少なくとも20%がアップ票を持たなかったため、昨日(Tenacious)バッジを受け取りました:( –

+0

あなたは@RonMyschukを持っています –

関連する問題