在IOS游戏上工作,我希望在玩家遇到一块碎片之后触摸基本上不起作用。
这是播放器击中碎片时的代码:
-(void)dieFrom:(SKNode*)killingDebris {
_dead = YES;
[_player runAction:[SKAction sequence:@[
[SKAction repeatAction:[SKAction rotateByAngle:M_PI duration:0] count:1],
[SKAction moveByX:0 y:-700 duration:1],
[SKAction runBlock:^{
[_player removeFromParent];
}]
]]];
}
哪种方式符合我的要求。问题是玩家基于touchesMoved
移动,因此如果用户将手指放在玩家身上,它会暂时停止moveByX
动作,使玩家在屏幕上停滞不前,然后自行移除,显然看起来很可怕。这是触摸方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self touchesMoved:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[_player runAction:[SKAction moveTo:[[touches anyObject] locationInNode:self] duration:0.15]];
}
我尝试在touchesMoved
方法的末尾添加以下内容:
if (_dead == YES) {
[self removeAllActions];
}
哪个也没用。无论如何,当玩家击中碎片时,我可以取消任何触摸吗?
答案 0 :(得分:2)
如果要为所有视图禁用触摸,请执行此操作;
[self.view setUserInteractionEnabled:NO];
如果要禁用特定视图的触摸,请执行以下操作
yourView.userInteractionEnabled = NO;
您可以通过将值设置为YES来启用它。