Я экспериментировал с UIGestureRecognizers
и новым SKScene/SKNode's
в SpriteKit
. У меня была одна проблема, и я был близок к ее устранению, но я смущен одной вещью. По сути, у меня есть распознаватель жестов панорамирования, который позволяет пользователю перетаскивать спрайт на экране.
Единственная проблема, которая у меня есть, заключается в том, что для фактической инициализации жеста панорамирования требуется ОДНО касание, а затем только при ВТОРОМ касании он работает правильно. Я думаю, это потому, что мой жест панорамирования инициализирован в touchesBegan
. Однако я не знаю, куда еще его поместить, поскольку его инициализация в методе initWithSize
SKScene остановила работу распознавателя жестов.
-(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];
}