gpt4 book ai didi

swift - 动态附加未知数的 SKAction - 取决于之前的 Action

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:14 24 4
gpt4 key购买 nike

我正在使用 SpriteKit 构建回合制游戏。这是一个人类玩家与 1 个以上 CPU 的对手。

在 CPU 轮流期间,我使用 SKAction.sequence 来显示 CPU 在做什么。这通常由一个 wait Action 和一个自定义的 SKAction.run block 组成。

现在我遇到的部分问题是 CPU 每回合可以执行多个attack 操作,但是在每个attack 任务之后我会重新计算是否应该再进行攻击,因为征服一个国家可能会开辟新的攻击途径。我在这里遇到的问题是,我无法知道应该预先进行多少次攻击,并且由于初始攻击本身在一个 block 中,因此不知道它是否会产生更多攻击。因此我不知道如何向我的序列添加额外的攻击步骤。

有人知道我该怎么做吗?一种想法是我实际上预先执行了所有攻击而不显示它们,然后为了玩家的利益而重播它们。但我担心在这种情况下游戏看起来像是挂了。

无论如何,我可以在运行序列的中途添加更多 SKActions 吗?

       let sequence:[SKAction] = []
let attackTasks = actions.getAttackTasks()
if attackTasks.count > 0 {
sequence.append(SKAction.wait(forDuration:0.5))
sequence.append(SKAction.run {
//PerformAttackTask Here calls another recursive function which calculates and generates more attacks
self.performAttackTask(attackTask: attackTasks.first!)
self.combatFinished = false
})
}

let sequenceAction = SKAction.sequence(sequence)
node.run(sequenceAction)

最佳答案

对于那些感兴趣的人,我最终改变了我的方法,将动画向下移动到 performAttackTask 方法并递归调用自身。

然后我使用一个仅在所有战斗完成时触发的回调来退出此循环。

这还利用了带有完成处理程序的 SKAction.run,然后移动到下一组操作

关于swift - 动态附加未知数的 SKAction - 取决于之前的 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49708206/

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