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

时间:2016-08-22 19:42:58

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

我正在学习Swift为iOS创建游戏,但我正在努力弄清楚精灵将如何与背景发生碰撞和互动。

基本游戏将是你引导迷宫的球,但迷宫可能比屏幕大几倍。迷宫可能是一个大位图,或由瓷砖组成,但我尚未根据如何使球与迷宫相互作用而决定。

我可以在迷宫精灵节点中制作所有拼贴,然后让SpriteKit解决它,但我认为这不是一个很好的选择。

然后是这里显示的SpriteKit边缘实体 - https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html 我可以在球可能碰撞的迷宫部分使用这些吗?

另一个问题是迷宫表面可能是圆形的,因此碰撞和物理也需要应对。

我能找到的所有例子似乎都是精灵与其他精灵相撞。但精灵和背景怎么样?

有没有人对如何解决问题有任何聪明的想法,或者你能指出一个可能有帮助的例子吗?

标记

1 个答案:

答案 0 :(得分:1)

没有正确或错误的方法来做到这一点。

以瓷砖与1固体背景的方式,你需要问自己一些问题:

我想要消耗多少内存? 我想要在它上面使用多少加载时间?
我想要多详细的背景?
我想要多大的(变化量)背景? 背景是否大于最大纹理尺寸?

在决定了你想要的东西之后,你会发现更容易确定你将要使用的方法。

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

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

同样,根据您希望地图的工作方式,将告诉您哪个选项最佳。我个人会从最后一个选项(合并一堆实体)开始,因为这将允许你合并边缘体,对于所有混凝土墙,然后如果你需要制作像门或临时墙的东西,我会添加它们单独的节点。

关于圆形零件的问题。

SKPhysicsBody允许使用CGPath,因此只需为您需要的任何形状创建路径即可。