Swift 游戏碰撞检测和物理 - Sprite 和背景

标签 swift sprite-kit collision-detection game-physics skphysicsbody

我正在学习 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/

相关文章:

ios - 接触时从场景中移除 Sprite

ios - 我可以提供 SDWebImageCache 的 URL 以从缓存或下载返回图像吗?

swift - UITextView.text 不能接受字符串类型的变量?

ios - 在 UIImageView 中加载图像并调整容器的大小 - swift

swift - 以无限期递减的间隔运行等待 Action 的函数

ios - Xcode5 : Cannot preview SpriteKit particle emitter in xcode

python - 使用矩阵作为 Sprite

ios - 选择 Collection View 中的单元格到新 Controller

ios - 是否可以在SKEmitterNode上应用过滤器?

c++ - 检查游戏对象碰撞的更好方法