swift - SpriteKit & Swift : How to create level "segments" that are randomly "stitched" together to create an endless game?

标签 swift sprite-kit skspritenode skscene procedural-generation

我所说的概念类似于许多简约流行手机游戏中的游戏风格,例如 Color Switch、Line Zen、Phases 或 Bounce。这些是由一系列“关卡”或“房间”组成的无尽游戏,这些“关卡”或“房间”按随机顺序放置,并且一个接一个,创造出无尽游戏的效果。关键是每个关卡中的挑战都不是随机的,它们是之前制定的,如果随机选择某个关卡,它就会出现在屏幕上,玩家可以通过该关卡。

我认为这个概念可能被称为程序生成,尽管我并不肯定。

我如何使用 Swift 在 SpriteKit 中执行此操作?我不太确定从哪里开始,也许为每个关卡段创建一个函数,然后每隔几秒,随机选择一个函数放在屏幕上?

感谢任何帮助!

非常感谢!

最佳答案

程序生成是您所描述的概念的名称。

根据您尝试制作的游戏类型,该方法会略有不同,但让我们看看无限跑酷游戏中的程序生成。您想要做的是设置一个级别段缓冲区。缓冲区中段的总大小应至少是屏幕大小的两倍。每个段都应该是同一段节点的子节点,并且它们的位置应该使得每个段在前一个段结束后立即开始。

当一个片段移出屏幕时(玩家经过它):

  • 从段节点中删除该段
  • 初始化一个新段(可能来自 sks 文件)
  • 将新段添加到段节点
  • 将其放置在段节点中最后一个段的后面。

用于选择下一个“随机段”的逻辑取决于您。它可以是真正随机的,也可以对其进行微调以获得最佳用户体验(避免重复片段、避免会破坏流程的片段等)。

关键是在片段离开屏幕时将其删除,并在缓冲区末尾添加一个新片段。这必须是基于位置的,而不是基于时间的(即使游戏以恒定速度滚动,时间也不太可靠)。

关于swift - SpriteKit & Swift : How to create level "segments" that are randomly "stitched" together to create an endless game?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35965073/

相关文章:

ios - GMSAutocompleteViewController 中无法显示取消按钮

ios - 在 Storyboard中传递值

swift - 移动背景 Swift SpriteKit

ios - 在 SpriteKit 中触发 "shot"

ios - 检测 Sprite 纹理内的触摸而不是整个框架 iOS Swift SpriteKit?

ios - 将非常大尺寸的图像缩小为非常小的图像,而不会失真和质量损失

swift - 在后台连续运行应用程序

ios - JSTileMap(.tmx) 与 Xcode SKTileMapNode

ios - UIButton 没有出现在 SKScene 中

ios - 在 Swift 中创建多个倒数计时器