【问题标题】:Swift game collision detection and physics - sprites and backgroundSwift 游戏碰撞检测和物理 - 精灵和背景
【发布时间】:2016-08-22 19:42:58
【问题描述】:

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

基本游戏将是一个球,您可以引导球穿过迷宫,但迷宫可能比屏幕大几倍。迷宫可以是一个大的位图,也可以是由图块组成,但我还没有决定如何让小球与迷宫互动。

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

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

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

我能找到的所有例子似乎都是精灵与其他精灵发生碰撞。但是精灵和背景呢?

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

标记

【问题讨论】:

  • 我建议将墙壁制作成精灵(L 形、I 形等),然后创建一个 SpriteKit 场景并放下墙壁。这将允许您轻松设置墙壁的物理类别,并允许与球轻松交互。

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


【解决方案1】:

这样做没有对错之分。

以瓷砖与 1 个纯色背景的方式,您需要问自己一些问题:

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

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

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

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

同样,根据您希望地图的工作方式,您会知道哪个选项最好。就我个人而言,我会从最后一个选项(将一堆实体合并在一起)开始,因为这将允许您合并所有混凝土墙的边缘实体,然后如果您需要制作门或临时墙之类的东西,我会将它们添加到单独的节点。

关于圆形零件的问题。

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

【讨论】:

  • 我想这就是我要找的raywenderlich.com/137216/…
  • 这是 ios 10 的一个新功能,可以让您使用瓷砖集,并且它们可以拥有物理实体。
  • 是的。这与我所说的一致,唯一的问题是您是否希望消耗所有内存
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多