Ios 在场景问题中暂停/播放

Ios 在场景问题中暂停/播放,ios,sprite-kit,skscene,Ios,Sprite Kit,Skscene,我正在制作一个演示游戏,并在场景中实现了暂停播放功能。这两个功能都可以正常工作。暂停将停止所有动作,播放将恢复除一个动作以外的动作。以下是我如何在触摸屏中实现暂停/播放功能: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint touchLocation = [touch locationInNode

我正在制作一个演示游戏,并在场景中实现了暂停播放功能。这两个功能都可以正常工作。暂停将停止所有动作,播放将恢复除一个动作以外的动作。以下是我如何在触摸屏中实现暂停/播放功能:

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

    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];

    if (node == _pauseButton) {
        [_pauseButton setTexture:[SKTexture textureWithImageNamed:@"pausebutton"]];
        _pauseButtonPressed = YES;
        self.scene.view.paused = YES;
    }

    if (node == _playButton) {
        [_playButton setTexture:[SKTexture textureWithImageNamed:@"playButton"]];
        _playButtonPressed = YES;
        self.scene.view.paused = NO;
    }
}
我还更新更新方法中的时间,以便计算当前时间,并使暂停操作正常工作

- (void)update:(NSTimeInterval)currentTime
{
    if (_lastUpdateTime) {
        _dt = currentTime - _lastUpdateTime;
    } else {
        _dt = 0;
    }
    _lastUpdateTime = currentTime;

    if (_pauseButtonPressed) {
        _lastUpdateTime = 0;
        return;
    }
}
下面是僵尸行动方法:

- (void)moveZombieToward:(CGPoint)location
{
    [self startZombieAnimation];
    _lastTouchLocation = location;
    CGPoint offset = CGPointSubtract(location, _zombie.position);

    CGPoint direction = CGPointNormalize(offset);
    _velocity = CGPointMultiplyScalar(direction, ZOMBIE_MOVE_POINTS_PER_SEC);


}

这个方法的唯一问题是(正如我前面提到的)调用移动僵尸
[self-moveZombieToward:touchLocation]在按下播放按钮后不工作,因此在按下播放按钮后,我无法再移动角色。其他动画效果很好,但角色不再通过触摸移动。有人能帮我理解我做错了什么吗?

这是我找到的答案。我在这里提到它是为了让其他人能从中受益。我在上面代码中所做的是启动暂停按钮和播放按钮,但当另一个按钮处于活动状态时,我从未将暂停和播放按钮设置为否。代码应如下所示:

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

    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];

    if (node == _pauseButton) {
        [_pauseButton setTexture:[SKTexture textureWithImageNamed:@"pausebutton"]];
        _pauseButtonPressed = YES;
        _playButtonPressed = NO;
        self.scene.paused = YES;
    }

    if (node == _playButton) {
        [_playButton setTexture:[SKTexture textureWithImageNamed:@"playButton"]];
        _playButtonPressed = YES;
        _pauseButtonPressed = NO;
        self.scene.paused = NO;
    }
}
另外一个提示是,我必须更改
self.scene.view.paused=YES
self.scene.paused=YES\u lastUpdateTime=0游戏暂停时,它会停止时间,玩家不会移动。耶,在雪碧套件中又学了一步。:)