swift - 如何对加速度计进行编码以使其具有固定的 x 位置

标签 swift accelerometer skphysicsbody

我有一艘船,它根据加速度计改变的重力方向移动,但我希望它只沿着屏幕的宽度移动(我已经知道如何做到这一点),但我不知道如何将其保持在固定的水平线上。这是我的代码

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)!))


    }






}

提前致谢!

最佳答案

替换

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

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

所以你不会影响 x 位置

关于swift - 如何对加速度计进行编码以使其具有固定的 x 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38595471/

相关文章:

accelerometer - 为什么IOS5中不赞成使用Accelerometer:didAccelerate :?

iphone - 检测 iPhone/Apple Watch 的物理运动

sprite-kit - 有没有办法使用 SKSpriteNode 和 PhysicsBody 参数用 Spritekit 制作软体?

ios - 在 Swift 1.2 中将 self 作为参数传递给 init 方法

swift - 可编码结构中的可编码变量

ios - 谷歌地图 iOS myLocation

c++ - cocos2dx中加速度计的使用方法

ios - 使用 sprites velocity (swift) flappy bird 游戏旋转 Sprite

swift - SpriteKit swift : How to make a sprite jump in place when tapped?

swift - Swift 中的未知函数返回类型。 ()?