在 SpriteKit 中生成随机地形
Generating random terrain in SpriteKit
首先我想说的是,我对游戏或SpriteKit框架没有很深的了解(但是,我有很好的编程能力)。
我想为 iPhone 和 iPad 创建一个 2D 游戏。到目前为止,我知道我必须使用 SpriteKit。然而,这款游戏最重要的是地形。我应该能够动态生成它,所以它会有曲线(但不是尖峰边缘),就像附加图像中的黑线一样。另外,我想将地面的下部分为两层(一层薄薄的绿色模拟草地,其余的一些褐色模拟泥土),但这是很好的选择。
另外我想知道当有东西(比如炮弹)接触到地面时,我如何"explode"一小部分地面。
有人可以解释或指导我如何实现这一目标吗?
谢谢!
地图生成
您可以在此处尝试两种方法:
SKTileMapNode
class在SpriteKit
- CoreGraphics 中的
CGPath
class(es)。
SpriteKit 方法
首先看看 SpriteKit
的瓦片地图功能。有一个名为 SKTileMapNode
的 class 可以帮助您制作基于图块的游戏世界的侧视图或自上而下视图。
Apple 在 WWDC 2016 上介绍了这个,the session video 是一个很好的起点。 Xcode 有一个很好的编辑器来设置您的瓷砖地图,包括特定瓷砖的变体(称为 "Tile Variants")并向您的瓷砖添加元数据。所有这些都会在这里有所帮助。
您可以将预建的瓷砖组定义为 SKTileGroup
s,例如山的两侧只有彼此相邻才有意义。这样做可能很简单,然后生成一些随机组合。然后,您可以使用不同的变体来显示 "exploded" 个图块。
The preferred method to create tile groups is to use the editor tools in Xcode. However, should you wish to work with SpriteKit’s tile support programmatically, the following examples discuss the necessary steps.
因此,您可以使用 SKTileGroupRule
来帮助您定义有关将磁贴放置在何处的规则以编程方式。
这里 a tutorial from Ray Wenderlich that takes you through the basics of a tile-based game. Here's another RayWenderlich.com tutorial 讨论程序关卡生成。
CGPath 方法
discusses a similar situation where someone asked about drawing curves for use with SpriteKit. It shows some code for generating randomized bezier curves, and links to a second answer 深入讨论了 CoreGraphics 对向贝塞尔曲线添加路径的处理。
爆炸
要分解方块,请查看 SKEmitterNode
。 Xcode 包括一个发射器编辑器,您可以用它做一些很酷的事情。
首先我想说的是,我对游戏或SpriteKit框架没有很深的了解(但是,我有很好的编程能力)。
我想为 iPhone 和 iPad 创建一个 2D 游戏。到目前为止,我知道我必须使用 SpriteKit。然而,这款游戏最重要的是地形。我应该能够动态生成它,所以它会有曲线(但不是尖峰边缘),就像附加图像中的黑线一样。另外,我想将地面的下部分为两层(一层薄薄的绿色模拟草地,其余的一些褐色模拟泥土),但这是很好的选择。
另外我想知道当有东西(比如炮弹)接触到地面时,我如何"explode"一小部分地面。
有人可以解释或指导我如何实现这一目标吗?
谢谢!
地图生成
您可以在此处尝试两种方法:
SKTileMapNode
class在SpriteKit
- CoreGraphics 中的
CGPath
class(es)。
SpriteKit 方法
首先看看 SpriteKit
的瓦片地图功能。有一个名为 SKTileMapNode
的 class 可以帮助您制作基于图块的游戏世界的侧视图或自上而下视图。
Apple 在 WWDC 2016 上介绍了这个,the session video 是一个很好的起点。 Xcode 有一个很好的编辑器来设置您的瓷砖地图,包括特定瓷砖的变体(称为 "Tile Variants")并向您的瓷砖添加元数据。所有这些都会在这里有所帮助。
您可以将预建的瓷砖组定义为 SKTileGroup
s,例如山的两侧只有彼此相邻才有意义。这样做可能很简单,然后生成一些随机组合。然后,您可以使用不同的变体来显示 "exploded" 个图块。
The preferred method to create tile groups is to use the editor tools in Xcode. However, should you wish to work with SpriteKit’s tile support programmatically, the following examples discuss the necessary steps.
因此,您可以使用 SKTileGroupRule
来帮助您定义有关将磁贴放置在何处的规则以编程方式。
这里 a tutorial from Ray Wenderlich that takes you through the basics of a tile-based game. Here's another RayWenderlich.com tutorial 讨论程序关卡生成。
CGPath 方法
爆炸
要分解方块,请查看 SKEmitterNode
。 Xcode 包括一个发射器编辑器,您可以用它做一些很酷的事情。