8

是否可以将两个(或更多)SKPhysicsBodys 添加到一个 SKNode?与此类似的内容: PhysicsEditor 中的示例 因为角色的头部应该与球相撞,所以顶部应该是圆形的。此外,球不得穿过球员。你知道如何做到这一点吗?

4

3 回答 3

6

正如上面的physicsBody属性SKNode所暗示的,节点和物理实体之间存在一对一的关系。

但是,这并不意味着您必须为每个可见的 sprite 设置一个基本形状。您可以采取几种方法来完成您正在寻找的内容:

  • 顶部真的需要倒圆吗?您可以用矩形覆盖大部分猴子艺术。(我想你想要一个圆形的顶部,所以碰撞会在不同的方向反弹,不过。)
  • 使用多边形后创建“圆端矩形”形状。您必须选择多个边来逼近适合您的应用程序的曲线:太多,它会减慢物理模拟,太少,当其他物体反弹时它不会表现得像一个圆圈。
  • 每个身体都需要一个节点,但不是每个节点都需要一个可见的精灵。你可以用两个节点制作你的猴子:一个拥有艺术并附加了方形或圆形物理体,另一个节点具有另一个物理体,通过固定关节连接,但没有艺术。
于 2013-09-24T23:15:18.607 回答
3

这是这个问题在谷歌上的热门话题,所以我想我会更新答案。这是可能的(虽然可能不是在 2013 年),根据 Mike S 在这篇文章中的回答。

你需要使用

// Swift
SKPhysicsBody(bodies: <#[AnyObject]#>) 

// Obj-c
[SKPhysicsBody bodyWithBodies:(NSArray *)bodies]

因此,您创建一个具有其他主体的主体,并将该主体添加到您的SKnode.

于 2015-04-27T10:48:26.647 回答
0

不,每个SKNode都只能有一个SKPhysicsBody,因为physicsBody是 的单个属性SKNode。就像rickster所说,您的第一个选择是使用bodyWithEdgeLoopFromRect:.SKPhysicsBody

您的另一个选择是创建两个单独SKNodes的并将它们附加到SKPhysicsJointFixed. rickster的回答很好,但我只是想给出类名,以防你想在谷歌上搜索一下。

于 2013-09-25T05:32:17.543 回答