的对面奥凯,所以我有下面的代码,使得在x轴上我skspritenode举动看下面的代码:节点离开左侧屏幕输入屏幕
manager.startAccelerometerUpdates()
manager.accelerometerUpdateInterval = 0.1
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()){
(data, error) in
let currentX = self.Player.position.x
if data!.acceleration.x < 0 {
self.destX = currentX + CGFloat(data!.acceleration.x * 1000)
}
else if data!.acceleration.x > 0 {
self.destX = currentX + CGFloat(data!.acceleration.x * 1000)
}
print(currentX)
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
let action = SKAction.moveToX(destX, duration: 0.1)
self.Player.runAction(action)
}
现在当skspritenode从左侧或我希望屏幕右侧重新出现在屏幕的另一侧。我试图添加以下线代码:
else if currentX >= self.size.width-5 {
self.destX = 5
}
但这可悲的没有工作。有人能解释我如何做到这一点?
奥凯所以这是更新的功能,现在的样子:
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
let action = SKAction.moveToX(destX, duration: 0.1)
self.Player.runAction(action)
if self.Player.position.x < CGRectGetMinX(self.frame) - (Player.size.width/2) {
self.player.position.x = CGRectGetMaxX(self.frame) - (self.Player.size.width/2)
}
else if self.Player.position.x > CGRectGetMaxX(self.frame) + (Player.size.width/2) {
self.player.position.x = CGRectGetMinX(self.frame) + (self.Player.size.width/2)
}
}
好,谢谢你的回答,但一个简单的问题。 (我对编码颇为陌生)。 accelerationData之前的let变量给出错误。该错误说明以下内容:条件绑定的初始化程序必须具有可选类型,而不是'CMAcceleration'。 – FutureCake
嘿,对不起,试着换掉!在一个?的声明中。否则,也许只是摆脱它,是一个建议。屏幕的东西工作? – crashoverride777
否:(我添加了你的代码,但它没有做任何不正确的事情更新我的问题,向你展示我是如何实现你的代码的,也许这是我身边的一个错误 – FutureCake