我正在制作一个具有从左向右移动的正方形的游戏,起初我是使用applyForce这样做的,但是我不喜欢结果,因为它不够灵敏。然后我改为velocity

func motionSensorUpdate(currentTime: CFTimeInterval){

    let square = childNodeWithName(ksquarename) as! SKSpriteNode

    updateSquare(currentTime, Square: square)

    if let data = motionManager.accelerometerData {

        if CGFloat(data.acceleration.x) > 0.2 {
            square.physicsBody!.velocity = CGVectorMake(200, -200)
        } else if CGFloat(data.acceleration.x) < 0.2 {
            square.physicsBody!.velocity = CGVectorMake(-200, -200)
        }
    }
}


现在的问题是它太敏感了。因此,如果我不移动手机,它仍然会移动对象。我如何解决它而不返回到applyforce

最佳答案

尝试:

let multiplier = 200.0
let x = data.acceleration.x

if x > 0.2 {
    square.physicsBody!.velocity = CGVector(dx: x * multiplier, dy: -200)
} else if x < 0.2 {
    square.physicsBody!.velocity = CGVector(dx: x * multiplier, dy: -200)
}


以上内容将根据设备平铺多少来改变节点的速度。只需更改multiplier即可更改灵敏度。

关于ios - 降低加速度计的灵敏度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30691099/

10-14 23:14