2017-10-31 25 views
0

私はSpriteKitで作成した円形のジョイスティックを持っていますが、ジョイスティックベースの内側に小さいコントロールスティックをクランプして、ジョイスティック、ジョイスティックベース内のコントロールスティックをクランプ

コードは私のdidMove(toView:)メソッドの中で私のジョイスティックを設定しています。このため

var DPad = SKSpriteNode(imageNamed: "dpad") 
DPad.size = CGSize(width: 150, height: 150) 
DPad.position = CGPoint(x: -270, y: -100) 

var thumbNode = SKSpriteNode(imageNamed: "joystick") 
thumbNode.size = CGSize(width: 50, height: 50) 
thumbNode.position = CGPoint(x: DPad.position.x, y: DPad.position.y) 

touchesBeganメソッド

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    for touch in touches { 
     let location = touch.location(in: self) 
     if thumbNode.contains(location) && isTracking == false { 
      isTracking = true 
     } 

    } 
} 
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 
    for touch in touches { 
     let location = touch.location(in: self) 
     if isTracking == true { 
      thumbNode.run(SKAction.move(to: location, duration: 0.01)) 
     } 
    } 
} 
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
    for touch in touches { 
     thumbNode.run(SKAction.move(to: DPad.position, duration: 0.01)) 
     if thumbNode.position.x > DPad.size.width || thumbNode.position.y > DPad.size.height { 
      thumbNode.position = DPad.position 
     } 
    } 
} 

override func update(_ currentTime: TimeInterval) { 
    // Called before each frame is rendered 
    if thumbNode.physicsBody?.velocity.dx > Float(0) || thumbNode.physicsBody?.velocity.dx < Float(0) { 
     print("greater") 
    } 
} 

答えて

1

、あなただけのちょっとjoystickNode.constraints = [SKConstraint.distance(SKRange(upperLimit: radius), to: baseNode)]

+0

を行い、それを追加するにはSKConstraint.distance(SKRange(upperLimit: radius), to: baseNode)

を使用することができます! KnightOfDragon私はあなたの助けに感謝する前に、このサイトの他の場所であなたを見ました –

関連する問題