Je dois boutons leftbutton, rightbutton
les deux étant SKSpriteNode()
. Lorsque l'utilisateur touche l'un des boutons, il y a un petit vaisseau qui bouge à gauche et à droite tant que l'utilisateur tient le contact.Comment obtenir constamment la position x d'un objet en mouvement dans swift?
Maintenant j'ai besoin d'une fonction ou de toute autre chose qui me donne le ship.position.x
tout le temps. Je suis coincé pour essayer de faire imprimer la position constamment. Je peux le faire imprimer chaque fois que le bouton est touché mais il ne l'imprime qu'une seule fois.
Dans mon didMove
j'ai seulement créé les boutons et le bateau. Donc, cela devrait être plutôt hors de propos.
func moveShip (moveBy: CGFloat, forTheKey: String) {
let moveAction = SKAction.moveBy(x: moveBy, y: 0, duration: 0.09)
let repeatForEver = SKAction.repeatForever(moveAction)
let movingSequence = SKAction.sequence([moveAction, repeatForEver])
ship.run(movingSequence, withKey: forTheKey)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("\(ship.position.x)")
for touch: AnyObject in touches {
let pointTouched = touch.location(in: self)
if leftButton.contains(pointTouched) {
// !! I MAKE IT PRINT THE POSITION HERE !!
moveShip(moveBy: -30, forTheKey: "leftButton")
}
else if rightButton.contains(pointTouched) {
moveShip(moveBy: 30, forTheKey: "rightButton")
}
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first{
let pos = touch.location(in: self)
let node = self.atPoint(pos)
if node == aButton {
} else {
ship.removeAction(forKey: "leftButton")
ship.removeAction(forKey: "rightButton")
}
}
}
Dans mon code, la position est imprimé une fois au début du toucher et non imprimé tant que le toucher et le toucher à nouveau. Y a-t-il un moyen possible de le faire avec mon code?
Vous pouvez remplacer une méthode de mise à jour. Dans cette méthode, vous devriez être en mesure d'obtenir votre objet et obtenir sa position! –
J'ai beaucoup lu sur cette méthode de mise à jour. Comment puis-je le remplacer? Quand j'essaie, il n'y a pas de méthode de mise à jour suggérée par xCode –
Jetez un oeil à la réponse de Bharath! –