gpt4 book ai didi

ios - self.scene.view.paused = YES 在更新中

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:23:37 25 4
gpt4 key购买 nike

我正在制作一个游戏,当两个物体(物体 A 和 B)发生碰撞时,游戏就结束了。每次调用更新时,对象 A 的位置都会发生变化。对象 B 的位置相同。代码是:

[self enumerateChildNodesWithName:@"objA" usingBlock:^(SKNode *node, BOOL *stop) {

if ([objB intersectsNode:node])
{

[node removeFromParent];
[self GameOver];

}

问题是:我希望 objA 在碰撞后不要消失。因此,为此我删除了 [node removeFromParent]; ,但是因为更新被一次又一次地调用。我的节点数量增加了,我添加的声音似乎永远不会结束。所以,我尝试添加:

[self performSelector:@selector(pauseGame) withObject:Nil afterDelay:0.1];

-(void) pauseGame
{
self.scene.view.paused = YES;

[self performSelector:@selector(gameOver) withObject:Nil afterDelay:0.1];

}

我不得不延迟使用 performSelector,因为在更新中放置 self.scene.view.paused = YES; 不允许我转到 游戏结束。但是,我不想耽搁!有办法吗??

谢谢

最佳答案

只需在您的场景中使用一个状态变量来指示当前状态。使用此状态对场景对象运行更新。

例如(伪代码):

update() 
if (state == GAME_PLAY) {
// Update relevant game nodes
} else if (state == GAME_OVER) {
// Update only what needs to be updated when the game is over
}

这样您就不需要停止整个场景并只添加与当前游戏状态相关的内容

关于ios - self.scene.view.paused = YES 在更新中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23358216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com