2016-08-01 3 views
-1

テクスチャ(SKSpriteNode)を持つ2つのノードがあり、ノードがy軸(範囲100〜0)の別のノードに近く、アニメーションを開始するときにアニメーションを作成しようとしています瞬間 私はお菓子がオムノムの近くにあり、彼がキャンディーをキャッチするために彼の口を開けているとき、カットロープのような何かをしようとしています。 (私の英語ノードが近いときにアニメーションを開始

+0

Iドンこれがあなたの古い質問にリンクされているかどうかはわかりません。あなたは私の答えを見ていますか? –

答えて

1

ため 申し訳ありませんあなたは、コードのいくつかの行を持つこの種の計算を実現することができ、コードで私を助けてください:

class GameScene: SKScene { 
    var sprite1 : SKSpriteNode! 
    var sprite2 : SKSpriteNode! 
    var range : CGFloat = 0.0 
    override func didMoveToView(view: SKView) { 
     self.range = randomCGFloat(0.0, max: 100.0) 
     sprite1 = SKSpriteNode.init(color: SKColor.blueColor(), size: CGSizeMake(40,40)) 
     sprite2 = SKSpriteNode.init(color: SKColor.redColor(), size: CGSizeMake(40,40)) 
     addChild(sprite1) 
     addChild(sprite2) 
     // Try to generate 10 positions and check relative distance 
     print("The range to check is :\(range)") 
     for i in 0...9 { 
      print("\(i)) time:") 
      let isNear = checkDistanceBtwSprites() 
      if isNear { 
       // do whatever you want with your sprites 
      } 
     } 
    } 
    func checkDistanceBtwSprites()->Bool{ 
     sprite1.position = getRandomPosition(40, maxX: 40, minY: 0, maxY: 320) 
     sprite2.position = getRandomPosition(40, maxX: 40, minY: 0, maxY: 320) 
     let distance = getDistance((sprite1.position), p2: (sprite2.position)) 
     print("distance for sprite1 and sprite2 is : \(distance)") 
     if distance <= self.range { 
      print("# -> success: sprite1 is near sprite2") 
      return true 
     } 
     return false 
    } 
    func getRandomPosition(minX: CGFloat, maxX: CGFloat, minY:CGFloat, maxY:CGFloat)->CGPoint { 
     return CGPointMake(randomCGFloat(minX, max: maxX),randomCGFloat(minY, max: maxY)) 
    } 
    func randomCGFloat(min: CGFloat, max: CGFloat)->CGFloat { 
     return (CGFloat(arc4random())/CGFloat(UINT32_MAX)) * (max - min) + min 
    } 
    func getDistance(p1:CGPoint,p2:CGPoint)->CGFloat { 
     let xDist = (p2.x - p1.x) 
     let yDist = (p2.y - p1.y) 
     return CGFloat(sqrt((xDist * xDist) + (yDist * yDist))) 
    } 
} 

出力

enter image description here

関連する問題