我正在使用Cocos2d 3.0进行编程,在Cocos2d 2.0中,我们可以使用以下代码将加速度计添加到app,但是此示例基于类CCLayer,它已在Cocos2d 3.0中弃用,而UIAccelerometer也被IOS中的CMMotionManager取代5.0,所以我想知道如何在Cocos2d 3.0中做到这一点?我用谷歌搜索了一段时间,没有找到任何有用的东西。
-(id) init
{
if ((self = [super init]))
{
// ...
self.isAccelerometerEnabled = YES;
// ...
}
}
-(void) accelerometer:(UIAccelerometer *)accelerometer
didAccelerate:(UIAcceleration *)acceleration
{
// ...
}
===
答案 0 :(得分:2)
我们已经写了一篇关于这个问题的教程:https://www.makegameswith.us/gamernews/371/accelerometer-with-cocos2d-30-and-ios-7
您需要使用CoreMotion
框架。
答案 1 :(得分:1)
嗯,上面给出的教程示例中存在两个问题。
CMMotionManager
。如果您不想处理这些开销,可以使用CCAccelerometer
类。它解决了这两个问题。
CoreMotion Framework
项目。CCAccelerometer.h
和CCAccelerometer.m
个文件。<CCSharedAccelerometerDelegate>
。[CCAcceleroMeter sharedAccelerometer];
-(void)onEnterTransitionDidFinish
[CCAcceleroMeter sharedAccelerometer]startUpdateForScene:self];
中启动加速度计
-(void)acceleroMeterDidAccelerate:(CMAccelerometerData*)accelerometerData
。-(void)onExitTransitionDidStart
[CCAcceleroMeter sharedAccelerometer]stopUpdateForScene:self];
中的加速度计
醇>
您可以在GitHub中找到示例项目。
答案 2 :(得分:1)
以下是示例:
Device::setAccelerometerEnabled(true);
auto accelerometerListener = EventListenerAcceleration::create([this](Acceleration* acc, Event* event)
{
});
getEventDispatcher()->addEventListenerWithSceneGraphPriority(accelerometerListener, this);