Я экспериментировал с UIGestureRecognizers
и новым SKScene/SKNode's
в SpriteKit
. У меня была одна проблема, и я приблизился к ее исправлению, но меня смущает одна вещь. По сути, у меня есть распознаватель жестов, который позволяет пользователю перетаскивать спрайт на экран.
Единственная проблема, с которой я сталкиваюсь, заключается в том, что для того, чтобы фактически инициализировать жест панорамы, требуется один щелчок, а затем только на SECUT на нем работает правильно. Я думаю, что это связано с тем, что мой жест передвижения инициализируется в touchesBegan
. Однако я не знаю, где еще это сделать, поскольку инициализация его в методе SKScene initWithSize
остановила распознаватель жестов от фактической работы.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (!self.pan) {
self.pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(dragPlayer:)];
self.pan.minimumNumberOfTouches = 1;
self.pan.delegate = self;
[self.view addGestureRecognizer:self.pan];
}
}
-(void)dragPlayer: (UIPanGestureRecognizer *)gesture {
CGPoint trans = [gesture translationInView:self.view];
SKAction *moveAction = [SKAction moveByX:trans.x y:-trans.y duration:0];
[self.player runAction:move];
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];
}