我正在学习 Swift 以创建适用于 iOS 的游戏,但我正在努力弄清楚 Sprite 将如何与背景发生碰撞和交互。
基本游戏是一个球,您引导它走下迷宫,但迷宫可能比屏幕大几倍。迷宫可以是一个大的位图,也可以由图 block 组成,但我还没有决定如何让球与迷宫互动。
我可以制作迷宫 Sprite 节点中的所有图 block ,然后让 SpriteKit 解决它,但我认为这不是一个很好的选择。
然后是 SpriteKit 边缘体,如图所示 - https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html 我可以在球可能碰撞的迷宫部分使用这些吗?
另一个问题是迷宫表面可能是圆形的,因此碰撞和物理也需要处理。
我能找到的所有示例似乎都是 Sprite 与其他 Sprite 发生碰撞。但是 Sprite 和背景呢?
有没有人对如何解决这个问题有任何聪明的想法,或者你能给我举一个可能有帮助的例子吗?
标记
最佳答案
执行此操作没有正确或错误的方法。
以瓷砖与 1 个纯色背景的方式,您需要问自己一些问题:
我想消耗多少内存?
我想在上面使用多少加载时间?
我想要多详细的背景?
我想制作多用途(变化量)的背景?
背景是否大于最大纹理尺寸?
在你决定了你想要什么之后,你会发现更容易决定你将使用的方法。
你的物理学是一个不同的问题,记住,物理学和节点在这里是两个不同的东西,所以你的物理 body 不必反射(reflect)节点设计,允许你做像隐形墙这样的事情。您有几种方法:
你可以使用SKPhysicsBody(texture:)
来使用纹理来制作你的墙(透明不会有碰撞。)
如果你正在做瓷砖,你可以在每个瓷砖上附加一个 body 。
最后,您可以生成大量主体并将它们合并到后台节点中。
同样,根据您希望 map 的工作方式,系统会告诉您哪个选项最好。就我个人而言,我会从最后一个选项开始(将一堆物体合并在一起,)因为这将允许您合并边缘物体,对于所有混凝土墙,然后如果您需要制作门或临时墙之类的东西,我会添加它们单独的节点。
关于圆形零件的问题。
SKPhysicsBody
允许使用 CGPath
,因此只需为您需要的任何形状创建路径即可。
关于Swift 游戏碰撞检测和物理 - Sprite 和背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39087496/