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

3
我正在学习Swift,想要创建iOS游戏,但是我不知道如何让精灵与背景进行碰撞和交互。
基本的游戏是一个球,你需要引导它通过迷宫,但是迷宫可能比屏幕大几倍。迷宫可以是一个大的位图,也可以由瓷砖组成,但我还没有决定如何让球与迷宫进行交互。
我可以将迷宫中的所有瓷砖都制作成精灵节点,然后让SpriteKit自行处理,但我认为这不是一个好选择。
然后有SpriteKit边缘体,如此处所示 - https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html。我能否在球可能与之相撞的迷宫部分上使用它们?
另一个问题是迷宫表面可能是圆形的,因此碰撞和物理效应也需要处理。
我能找到的所有示例似乎都是精灵与其他精灵之间的碰撞。但是精灵和背景呢?
请问是否有任何聪明的想法来解决这个问题,或者您可以向我指出一个可能有所帮助的示例吗?
Mark

我建议将墙壁制作成精灵(L形,I形等),然后只需创建一个SpriteKit场景并放置墙壁。这将使您可以轻松设置墙壁的物理类别,并允许与球进行简单的交互。 - Hedylove
1个回答

1

没有正确或错误的方法。

在瓷砖与一个实心背景的方式中,需要问自己一些问题:

我想要消耗多少内存?
我希望用多少加载时间?
我想要多详细的背景?
我想要多变化的背景?
背景是否大于最大纹理尺寸?

当你决定了你想要什么后,你会发现更容易确定你将使用的方法。

你的物理学是一个不同的问题,记住,物理和节点在这里是两个不同的东西,所以你的物理体不必反映出节点设计,允许你做一些像隐形墙之类的事情。你有几种方法:

你可以使用 SKPhysicsBody(texture:) 使用纹理来制作你的墙(透明度不会有碰撞)。
如果你正在做瓷砖,你可以给每个瓷砖附上一个物体。
最后,你可以生成大量的物体并将它们合并到你的背景节点中。

根据您希望地图如何工作的方式,会告诉您哪个选项最佳。就我个人而言,我会从最后一个选项开始(合并一堆物体在一起),因为这将允许您合并边缘物体,适用于所有混凝土墙壁,然后如果您需要制作像门或临时墙之类的东西,我会在单独的节点中添加它们。
至于圆形部分的问题。
SKPhysicsBody允许使用CGPath,因此只需为所需的任何形状创建路径即可。

我认为这就是我正在寻找的东西 https://www.raywenderlich.com/137216/whats-new-spritekit-ios-10-look-tile-maps - MarkT
这是 iOS 10 的一个新功能,它允许您使用平铺集,并且它们可以具有物理体。 - MarkT
是的。这符合我的说法,唯一的问题是你是否想要消耗所有那些内存。 - Knight0fDragon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接