我一直在尝试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];
}
这是因为您要在触摸开始时添加手势,因此只有在屏幕至少被点击一次后,该手势才会存在。此外,我会验证您是否确实使用 initWithSize: 作为初始化程序,因为在那里添加手势应该不会有任何问题。
另一种选择是将代码移动到添加手势-[SKScene didMovetoView:]
场景呈现后立即调用。更多信息在文档中.
- (void)didMoveToView:(SKView *)view
{
[super didMoveToView:view];
// add gesture here!
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)