我正在制作一款游戏,您应该可以通过左右倾斜设备来移动玩家。我正在为此使用加速度计。在我的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/

10-10 06:29