Как использовать Core Motion и гироскоп в Xcode 5

Я искал некоторую информацию о движении ядра и гироскопе, но пока не нашел правильного ответа.

Я работаю с Xcode 5

Мой вопрос:

Как я могу заставить изображение (или, в данном случае, игрока) двигаться влево или вправо, наклоняя iPhone, как персонаж в игре под названием «Doodle Jump»?

Я уже заставил его прыгать, но я не могу заставить его двигаться влево или вправо, наклоняя iPhone. У меня также есть учетная запись разработчика, и я попробовал ее на реальном устройстве.

Любая помощь будет высоко оценена!


person Kaspersson    schedule 17.03.2014    source источник
comment
Вы сэкономите несколько отрицательных голосов и получите хорошие ответы, если опубликуете код, который пробовали.   -  person vefthym    schedule 17.03.2014
comment
xcode не имеет ни Core Motion, ни гироскопа. это просто IDE.   -  person vikingosegundo    schedule 06.04.2014
comment
@vefthym Я не согласен, я думаю, что он очень ясно выразился в своем заголовке: как мне использовать Core Motion и гироскоп. Хотя вопрос у него какой-то специфический. Так что на самом деле, слава богу, он не вставил то, что у него уже есть. Иначе это было бы очень бесполезно для будущих читателей.   -  person Louis Hong    schedule 30.08.2014
comment
Я думаю, вы имеете в виду SDK 7 от xcode 5 Kaspersson   -  person Louis Hong    schedule 30.08.2014


Ответы (1)


1.Создайте новый проект Spritekit:

введите здесь описание изображения

2. Добавьте Core Motion Framework

введите здесь описание изображения

3. Добавьте этот код в метод touchesBegan вашего файла MyScene.m:

sprite.size = CGSizeMake (20, 20);

4. Добавьте этот код в метод «обновления» вашего файла MyScene.m:

CMMotionManager* _motionManager;
 -(void)update:(CFTimeInterval)currentTime {
     if (_motionManager==nil) {
         _motionManager=[[CMMotionManager alloc]init];
         _motionManager.deviceMotionUpdateInterval=0.25;
         [_motionManager startDeviceMotionUpdates];
     }
     SKSpriteNode *sprite;
     for (int i=0; i<self.children.count;i++) {
        sprite=[self.children objectAtIndex:i];
        sprite.position = CGPointMake(sprite.position.x * _motionManager.deviceMotion.attitude.pitch*10, sprite.position.y);
     }
}

Вы можете найти более подробную версию здесь.

Вот небольшое видео с результатом этого кода.

person Stefan    schedule 05.04.2014
comment
Спасибо за ответ, но есть одна проблема. Моя игра находится в приложении Single View. Из-за этого я не могу использовать команды игры spritekit. Любые идеи, как это можно сделать в приложении с одним представлением? - person Kaspersson; 08.04.2014
comment
CMMotionManager не является частью SpriteKit. Вы также можете использовать его для UIViews. Вместо изменения положения SKSpriteNode вам нужно настроить положение вашего UIView. - person Stefan; 08.05.2014