Обнаружение сотрясений в спрайт-комплекте

У меня проблема с обнаружением тряски. Это сцена в Sprit Kit, и я определил детектор движения следующим образом:

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{

}

-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {

NSLog(@"test?");

}

Где моя ошибка? Должен ли я реализовать это так, как я должен был это сделать с помощью UIGestureRecognizer?

Заранее спасибо (и извините за мой плохой английский) Джулиан

1 ответ

Решение

По-видимому, вы не можете обнаружить события встряхивания от SKScene подкласс, такой как GameScene, Тем не менее, вы можете обнаружить их из контроллера представления, таких как GameViewController, Когда происходит событие встряхивания, вы можете вызвать обработчик встряхивания в GameScene из контроллера просмотра.

В вашем GameViewController.m добавьте это, чтобы обнаружить события встряхивания

- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    if (motion == UIEventSubtypeMotionShake) {
        SKView *skView = (SKView *)self.view;
        GameScene *scene = (GameScene *)skView.scene;
        // Call a function in the GameScene
        [scene shake];
    }
}

Добавьте это к @interface в GameScene.h

- (void) shake;

Добавьте это к GameScene.m

- (void) shake {
    NSLog(@"shake");
}
Другие вопросы по тегам