繁体   English   中英

Spritekit中的覆盖触摸

[英]Overriding touches in Spritekit

在我正在开发的游戏中,您可以通过触摸屏幕的左右两侧来从左向右移动角色。 我要做的是确保如果您先触摸左侧然后再触摸右侧,则角色开始向右移动,而不是向左移动。 向左移动的动作已被覆盖。 我目前已经做到了,因此游戏是单点触摸,但是覆盖先前触摸的方法才是我所坚持的。 我的代码:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];

if (location.x < screenWidth/2){ leftMovement = YES; [player runLeft]; } else { rightMovement = YES; [player runRight]; } self.userInteractionEnabled = NO; } - (void) touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self playerStop]; self.userInteractionEnabled = YES; } - (void) update:(NSTimeInterval)currentTime { if (isTouched && leftMovement){ player.physicsBody.velocity=CGVectorMake(-PLAYERSPEED, player.physicsBody.velocity.dy); } else if (isTouched && rightMovement){ player.physicsBody.velocity=CGVectorMake(PLAYERSPEED, player.physicsBody.velocity.dy); } }

您应该考虑的一件事是,当用户触摸屏幕的另一侧时,同时更改leftMovementrightMovement的值,否则,将永远不会调用update方法中的right移动。

if (location.x < screenWidth/2){
    leftMovement = YES;
    rightMovement = NO;
    [player runLeft];
}
else {
    rightMovement = YES;
    leftMovement = NO;
    [player runRight];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM