我对SpriteKit比较陌生,我想制作一个类似于Teeter的游戏,这样我就可以发展自己的个人知识。花了几天的时间在网上搜索后,我找不到任何教你如何使用iPhone运动传感器的教程当设备倾斜时,所以我放弃了并转向Stack。更具体地说,我想知道是否有可能将CoreMotion框架与SpriteKit一起使用。如果没有,开发游戏的“最佳解决方案或方法”是什么,比如在不使用第三方游戏引擎的iOS设备上运行的Teeter?
答案 0 :(得分:3)
当然可以使用Core Motion:
@import CoreMotion;
这是加速度计读数的示例实现 - 声明一个实例变量:
CMMotionManager *_myMotionManager;
初始化场景时的初始设置:
_myMotionManager = [[CMMotionManager alloc] init];
_myMotionManager.accelerometerUpdateInterval = 0.2; // tweak the sensitivity of intervals
[_myMotionManager startAccelerometerUpdates];
这是如何在Y轴上收集加速度计数据(有三个:X,Y,Z) - 把它放在你的Sprite Kit游戏的更新方法中:
float yAcceleration = _myMotionManager.accelerometerData.acceleration.y;
NSLog(@"y axis acceleration data: %f", yAcceleration);
确保[_myMotionManager stopAccelerometerUpdates];
何时不再需要它们。
如果您需要陀螺仪数据,方法非常相似 - 在这里,您将启动陀螺仪更新并使用_myMotionManager.gyroData.rotationRate.y
代替。
答案 1 :(得分:1)
是的,你的想法是正确的。而不是游戏对象响应来自触摸的变化,而是来自陀螺仪的变化,可以通过CoreMotion访问。
不确定您还想知道更多内容,只需确保将陀螺仪信息的更新设置为更快,如果您的应用程序的默认报告速度似乎有些滞后。如果您有任何问题,请随时询问。