我正在制作一款游戏,您应该可以通过左右倾斜设备来移动玩家。我正在为此使用加速度计。在我的GameScene类中,我在Player类中调用MovementSetup,它执行以下操作:
-(void)movementSetup {
self.motionManager = [[CMMotionManager alloc]init];
self.motionManager.accelerometerUpdateInterval = 0.2;
[self.motionManager startAccelerometerUpdates];
self.accelerometerData = self.motionManager.accelerometerData;
}
然后在GameScene类的update方法中,在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和CMAccelerometerDataData * accelerometerData。
当我运行此程序并在我的设备(iPhone 6)上对其进行测试时,无论我倾斜设备如何,精灵节点都只会缓慢向左移动。为什么?
编辑:一段时间后,我也收到了内存警告
最佳答案
我只是发现自己做错了什么:
首先,将self.accelerometerData = self.motionManager.accelerometerData移至移动方法,以便每帧对其进行更新。
然后将小于和等于值更改为小于1的值,因为加速度计将不会获得大于1的值。
关于ios - SpriteKit中的加速度计不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26833151/