Обнаружение сотрясений в спрайт-комплекте
У меня проблема с обнаружением тряски. Это сцена в 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");
}