从 Spritekit 中的多个块创建 "smooth" 平面

Creating a "smooth" flat surface from multiple blocks in Spritekit

我正在尝试用 Spritekit 和 Swift 编写一个 iOS 游戏,这是我在 Whosebug 上的第一个问题 :)

为了简化我的问题和我的约束,假设我有两个矩形 SKShapeNodes(我的关卡),它们具有相同的高度,完全并排,具有物理实体,但 non-dynamic。英雄只是一个具有动态物理 body 的方形 SKShapeNode,它可以在这些矩形的顶部移动。玩家使用加速度计移动英雄。

我不知道为什么,但有时,当英雄沿着矩形的顶部滑动时,它会立即停在两个矩形之间的缝隙处,或者似乎被这个缝隙绊倒了(小跳过去it) :((( 移动应该是平滑的。

知道我不能出于游戏的目的合并它们,是否有解决方法可以使两个矩形之间的表面更 "flat"/更平滑?

(我尝试过但没有用的方法:"floor" 所有维度,位置最接近 Int 值;使英雄物理 body 更圆;enable/disable 精确碰撞) .

谢谢!

解决此问题的最简单方法是为移动对象创建圆形物理体而不是矩形。如果需要,您还可以组合 2 个或更多物理体以更准确地覆盖对象的高度。请参阅在 docs.

中使用 (SKPhysicsBody *)bodyWithBodies:(NSArray *)bodies

将 2 个物体与底部的圆组合起来: