【问题标题】:How to implement a SpriteKit tiled background 2d Platform如何实现 SpriteKit 平铺背景 2d 平台
【发布时间】:2023-03-15 10:18:01
【问题描述】:

说到SpriteKit,目前还没有很多“好”的教程,所以我请堆栈溢出大神来帮助我。

我正在为 iOS 构建一个 2d 平台游戏。地图将根据角色移动向各个方向滚动。我也会实现视差背景,但这不是我今天要讨论的问题。

显然,我正在尝试以最有效的方式执行此操作,以便我可以合并大关卡,但我不确定如何正确执行此操作。我是使用一堆代表平铺背景的小图像还是使用一个大图像(我听说这是不行的)。我是否使用带有所有图块的精灵表图像,然后将其分割成一个数组。

我不太确定如何实现图像数组并且只显示屏幕上的图像。我是否要从场景中移除所有图块,然后检查哪些图块在相机范围内,然后将它们添加回场景中。

我正在寻找有关如何使用 swift 专门为 SpriteKit 实现此功能的任何详细帮助。

感谢您的帮助!我真的很感激!!!!

【问题讨论】:

  • 到目前为止你尝试过什么?本教程 (raywenderlich.com/137216/…) 似乎是一个不错的起点。
  • 我刚刚发现了 Tile 地图节点,所以我现在正在看那个教程。感谢参考
  • 平铺节点的全部意义在于重用相同的纹理以减少纹理内存,但最终会使用更多的 CPU 使用率。因此,如果您在 bg 中看到很多相同的图案,您可能需要考虑使用平铺地图,因为您将保存在可用内存中的值会超过所使用的 CPU 时间。如果您的 BG 没有可重复的模式,那么您不想使用图块。
  • @Knight0fDragon 感谢您的解释。所以只是为了确定。如果我想让我的背景的 1 层成为一个独特的图像,比如说 5760x1080 像素的区域。我应该为此使用 1 张图片,而不是将其拆分为图块?
  • 你使用了大量的纹理内存,它必须是 2 个图像,因为最大纹理大小是 4096x4096

标签: swift image background sprite-kit tiled


【解决方案1】:

实际上有一个非常好的方法可以在 spritekit 中实现 tmx 平铺地图,并且在 Ray Wenderlich 教程中已经得到了很好的解释。以下链接应为您提供所需的一切。

Read this to get familiar with tiled maps

Download and import the JSTilemap library into your spritekit project

Read this tutorial to learn how to import tilemaps and work with them on a 2D platformer

为了实现视差效果,除了实际的背景图像外,使用不同的背景和前景对象,并为每个对象设置适当的zPosition,以便更近的对象显示在更远的对象之上。最后,当您的玩家向前移动,而物体向后移动时,较近的物体将比远处的物体移动得更快,因此为最近的物体设置较高的速度,而为较远的物体设置较低的速度。背景应该滚动最慢。这会给你一个很好的视差效果,如this tutorial所示。

另外,每晚睡前祝福 Ray Wenderlich。

【讨论】:

  • 感谢您的回答,但我不想使用外部磁贴系统。 SpriteKit 内置了瓦片地图功能。如果您能够解释如何正确有效地使用它,我会接受它作为答案。
猜你喜欢
  • 2014-01-08
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 2014-12-24
相关资源
最近更新 更多