gpt4 book ai didi

ios - SKAction 不重启

转载 作者:行者123 更新时间:2023-11-28 06:45:59 25 4
gpt4 key购买 nike

在我的 didMoveToView 中,我有以下代码:

let spawnWall = SKAction.runBlock({[unowned self] in self.makeWalls();});
let sequence = SKAction.sequence([SKAction.waitForDuration(2.9),spawnWall])
let repeatForever = SKAction.repeatActionForever(sequence);
self.runAction(repeatForever, withKey:"makeWalls");

它基本上每 2.9 秒调用一次函数 makeWalls

现在只要有触摸,touchesBegan 函数就会调用一个名为 changeSpeed 的函数来执行此操作:

func changeSpeed()
{
if score >= 2

{
self.removeActionForKey("makeWalls");
makeWallsDividerT = 300;
let spawnWall = SKAction.runBlock({[unowned self] in self.makeWalls();});
let sequence = SKAction.sequence([SKAction.waitForDuration(1.4),spawnWall])
let repeatForever = SKAction.repeatActionForever(sequence);
self.runAction(repeatForever, withKey:"makeWalls");
}
}

基本上停止从 didMoveToView 启动的先前 SKAction 并更快地调用 makeWalls(每 1.4 秒),当且仅当分数 >=2 时。

在我的 gameReset 代码中,我有以下内容:

self.removeAllActions()
self.removeAllChildren()
self.view?.presentScene(self)

我期待

当游戏重新开始时,每 2.9 秒调用一次 makeWalls,直到得分 >=2 然后每 1.4 秒调用一次 makeWalls。

发生了什么

makeWalls 在执行上述操作时每 1.4 秒被调用一次。我这么说是因为墙壁似乎来得更快。

我也试过但没用的

我尝试将 self.removeActionForKey("makeWalls"); 放入我在上面第一个代码块中粘贴的 didMoveToView 代码中。不幸的是,这似乎也不起作用。

可以在这里找到: https://paste.ee/p/tGlrY#AtdTJLRBGUcPFXtkVo2XEvsFJkNK1hLR

如有任何帮助,我们将不胜感激。

谢谢!!

最佳答案

我认为您最大的问题是场景没有正确地自行重置。我还没有看到有人做你正在做的事情并重新呈现你的场景(或者直接调用 didMoveToView,我认为永远不会直接调用)而不是重新启动一个新场景。我会尝试以下...

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
/* Called when a touch begins */

if freezeMainChar == 0
{
changeSpeed()
let touch = touches.first
let touchLocation = touch?.locationInNode(self)

if touchLocation!.x == 450
{
//do something
}
}

else
{
score = 0
scoreLabel.text = "0"

movingObjects.removeAllChildren()
movingObjects.removeAllActions()
gameOverLabelHolder.removeAllChildren()

freezeMainChar = 0
movingObjects.speed = 1

self.removeAllActions()
self.removeAllChildren()

//didMoveToView(view!)
let newScene = GameScene(size: size)
newScene.scaleMode = scene.scaleMode
view.presentScene(newScene)
}

}

这应该会为新游戏带来全新的开始。希望这有助于解决您的问题。

关于ios - SKAction 不重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344462/

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