繁体   English   中英

SpriteKit中的加速度计不起作用

[英]Accelerometer in SpriteKit not working

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM