我正在制作一个游戏,在这个游戏中,你应该能够通过左右倾斜设备来移动玩家。我用的是加速度计。在我的GameScene类中,我在我的Player类中调用movementSetup,它可以执行以下操作:
-(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和CMAcceleraterData*accelerometerData。
当我在我的设备(iPhone 6)上运行并测试它时,无论我倾斜设备,精灵节点都会慢慢向左移动。为什么?
编辑:过了一段时间,我也收到了内存警告
我刚刚发现我做错了什么:
首先,将self.accelerometerData=self.motionManager.acclerometerData移动到移动方法,以便每帧更新一次。
然后将小于和等于的值更改为小于1的值,因为加速度计不会得到大于1的值;