我制作的游戏有一个从左到右移动的正方形,起初我使用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
的情况下修复它?
答案 0 :(得分:1)
尝试:
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
即可更改灵敏度。