【问题标题】:SpriteKit & Swift: How to create level "segments" that are randomly "stitched" together to create an endless game?SpriteKit & Swift:如何创建随机“缝合”在一起的关卡“片段”以创建无尽的游戏?
【发布时间】:2016-03-13 00:28:47
【问题描述】:

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

我认为这个概念可能被称为程序生成,虽然我并不积极。

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

感谢任何帮助!

非常感谢!

【问题讨论】:

    标签: swift sprite-kit skspritenode skscene procedural-generation


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢@dionlarson 的回复。只有一个问题:我如何通过代码将 .sks 文件作为一个片段加载到场景中?因为在这种情况下,.sks 文件并不是一个完整的场景,它只是一个级别的片段。
    • 另外,我如何确保每个级别段在 sks 编辑器中的大小正确。即对于横向游戏,每个部分的高度必须等于游戏所在设备的高度。非常感谢?
    • 如何处理尺寸转换由您决定。一般情况下,iPad 横向游戏的顶部和底部保持相同的纵横比并添加更多装饰是最容易的。
    • 您可以将 sks 文件直接加载到节点而不是场景中,然后将其添加到场景中。让节点 = SKNode(fileNamed: "MySksFile")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2020-04-18
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多