2016-07-26 3 views
0

J'ai un vaisseau qui se déplace selon la direction de la gravité qui est modifiée par l'accéléromètre, mais je veux qu'il ne bouge que sur la largeur de l'écran (je sais déjà comment faire cela), mais je ne sais pas comment le garder sur une ligne horizontale fixe. Voici mon codeComment coder l'accéléromètre pour avoir une position x fixe

class GameScene: SKScene { 

var manager = CMMotionManager() 
var ship = SKSpriteNode() 



override func didMoveToView(view: SKView) { 
    /* Setup your scene here */ 


    let shipTexture = SKTexture(imageNamed: "EvadersShipVert2.png") 

    ship = SKSpriteNode(texture: shipTexture) 

    ship.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame) - 250) 

    ship.size = CGSize(width: 90, height: 115) 

    shipTexture.filteringMode = SKTextureFilteringMode.Nearest 

    ship.zPosition = 2 

    ship.physicsBody = SKPhysicsBody(texture: shipTexture, size: CGSize(width: 90, height: 115)) 

    ship.physicsBody?.dynamic = true 

    self.addChild(ship) 


    manager.startAccelerometerUpdates() 
    manager.accelerometerUpdateInterval = 0.1 
    manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) { 

     (data, error) in 

     self.physicsWorld.gravity = CGVectorMake(CGFloat((data?.acceleration.x)!), CGFloat((data?.acceleration.y)!)) 


    } 






} 

merci à l'avance!

Répondre

0

Remplacer

self.physicsWorld.gravity = CGVectorMake(CGFloat((data?.acceleration.x)!), CGFloat((data?.acceleration.y)!)) 

Avec

self.physicsWorld.gravity = CGVectorMake(0.0, CGFloat((data?.acceleration.y)!) 

Vous n'êtes pas affecter la position x

+0

Le navire tombe toujours vers le bas de l'écran, il ne répond pas seulement à l'accéléromètre sur l'axe y. –

+0

J'ai mis à jour la réponse, je l'ai eu dans le mauvais sens – Luke