UIGestureRecognizers
私はと の新しいSKScene/SKNode's
を試してきましたSpriteKit
。私は1つの問題を抱えていて、それを修正することに近づきましたが、1つのことで混乱しています. 基本的に、ユーザーが画面上でスプライトをドラッグできるようにするパン ジェスチャ レコグナイザーがあります。
私が抱えている唯一の問題は、パンジェスチャを実際に初期化するのに1回のタップが必要であり、2回目のタップでのみ正しく機能することです。これは、パン ジェスチャが で初期化されているためだと考えています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];
}