【发布时间】:2014-11-09 20:47:07
【问题描述】:
我正在制作一款游戏,您应该能够通过左右倾斜设备来移动玩家。我正在为此使用加速度计。在我的 GameScene 类中,我在 Player 类中调用了 motionSetup,它执行以下操作:
-(void)movementSetup {
self.motionManager = [[CMMotionManager alloc]init];
self.motionManager.accelerometerUpdateInterval = 0.2;
[self.motionManager startAccelerometerUpdates];
self.accelerometerData = self.motionManager.accelerometerData;
}
然后在我的 GameScene 类的更新方法中,我在我的 Player 类中调用我的移动方法:
-(void)movement {
CGVector moveLeftVector = CGVectorMake(-1, 0);
CGVector moveRightVector = CGVectorMake(1, 0);
if (fabs(self.accelerometerData.acceleration.x)<1) {
SKAction *moveLeft = [SKAction moveBy:moveLeftVector duration:0.2];
[self.aPlayer runAction:moveLeft];
}
if (fabs(self.accelerometerData.acceleration.x)>1) {
SKAction *moveRight = [SKAction moveBy:moveRightVector duration:0.2];
[self.aPlayer runAction:moveRight];
}
}
我还在我的播放器类中声明了 3 个属性:SKSpriteNode *aPlayer、CMMotionManager *motionManager 和 CMAccelerometerData *accelerometerData。
当我在我的设备 (iPhone 6) 上运行并测试它时,无论我倾斜设备,精灵节点都会缓慢地向左移动。为什么?
编辑:一段时间后我也收到了内存警告
【问题讨论】:
-
在每个加速度计事件上运行一个新动作是完全矫枉过正的,而只是将加速度应用于节点的位置
-
谢谢!我对此很陌生
标签: ios objective-c sprite-kit accelerometer core-motion