私が取り組んでいるデモ ゲームがあり、シーンに一時停止再生機能を実装しました。どちらの機能も正常に動作します。一時停止すると、すべてのアクションが停止し、1 つのアクションを除いて再生が再開されます。タッチで一時停止/再生機能を実装する方法は次のとおりです。
- (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];
機能しないため、再生ボタンを押した後、キャラクターを移動できなくなることです。他のアニメーションは問題なく動作しますが、キャラクターはタッチしても動かなくなります。私が間違っていることを理解するのを手伝ってくれる人はいますか?