Comment faire pivoter sprite sprite kit avec swift

Salut à tous, mon problème est au sujet de la rotation de deux sprites. Quand je touche la moitié droite de l'écran commence la rotation et le déplacement sprite2 et sprite3. Si je touche la moitié gauche de l'écran, la rotation s'arrête à cause de la vitesse-vitesse = 0. Si je touche la moitié gauche de nouveau la rotation commence.

Cependant, si je touche la moitié de l'écran correspondant à la rotation en cours-direction de la vitesse est dupliqué. Je veux être en mesure de changer la direction de la rotation, mais pour la vitesse reste constante.

Vidéo montrant le problème: http://youtu.be/HxLwl1QZiNM

import SpriteKit
class GameScene: SKScene {
let sprite = SKSpriteNode(imageNamed:"bWhite")
let sprite2 = SKSpriteNode(imageNamed:"bBlue")
let sprite3 = SKSpriteNode(imageNamed:"bRed")
let circle = SKSpriteNode(imageNamed:"bCircle")       
override func didMoveToView(view: SKView) {
/* Setup your scene here */
backColor = SKColor(red: 0, green: 0, blue: 0, alpha: 1)
self.backgroundColor = backColor
sprite.setScale(1.25)
sprite2.setScale(1)
sprite3.setScale(1)
sprite.position = CGPointMake(self.frame.size.width/2, (self.frame.size.height/2)-200);
circle.position = CGPointMake(self.frame.size.width/2, (self.frame.size.height/2)-200);
sprite3.zRotation = 172.77
sprite2.anchorPoint = CGPointMake(-1.10, 0.5);
sprite3.anchorPoint = CGPointMake(-1.10, 0.5);
self.addChild(sprite)
self.addChild(circle)
sprite.addChild(sprite2)
sprite.addChild(sprite3)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1)
let action2 = SKAction.rotateByAngle(CGFloat(-M_PI), duration:1)
if (location.x > self.frame.size.width / 2)
{
sprite2.runAction(SKAction.repeatActionForever(action2))
sprite3.runAction(SKAction.repeatActionForever(action2))
} else {
sprite2.runAction(SKAction.repeatActionForever(action))
sprite3.runAction(SKAction.repeatActionForever(action))
}     
}
}
  • Donc pour voir si j'ai bien compris: Vous voulez que les cercles de commencer à tourner dans la direction indiquée par la première touche. Après cela, vous ne voulez être en mesure de changer l'orientation, et non pas de l'arrêter complètement?
  • c'est exactement ce que je veux
  • Je veux déplacer alors que je touche à gauche de la moitié de la rotation de l'écran à gauche, Si je ne touche pas arrêter et si je touche droite de la moitié de la rotation de l'écran à droite
  • Désolé, voulez-vous passer en plus de la rotation ou vous parlez du fait que vous souhaitez déclencher la rotation en fonction de la position de la touche?
  • Si je touche à gauche de la moitié de la rotation de l'écran à gauche, s'arrêter de toucher à gauche stop de rotation, sans bouger .Si je touche droite de la moitié de la rotation de l'écran à droite, s'arrêter de toucher droit de l'arrêt de la rotation, sans bouger.
  • Je crois que mon code mis à jour ci-dessous réalise tout cela. 🙂
  • Hey, j'ai une question à propos de votre réponse à l'adresse stackoverflow.com/questions/30410893/..., si vous pourriez m'aider ce serait génial.

InformationsquelleAutor | 2014-06-16