我一直在尝试UIGestureRecognizers
新SKScene/SKNode's
的 in SpriteKit
. 我遇到了一个问题,我接近解决它,但我对一件事感到困惑。本质上,我有一个平移手势识别器,允许用户在屏幕上拖动精灵。
我遇到的唯一问题是需要一次点击才能实际初始化平移手势,然后只有在第二次点击时才能正常工作。我在想这是因为我的平移手势是在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];
}