Sprite Kit - 将两个物理主体添加到一个SKNode

时间:2013-09-24 22:29:39

标签: ios7 physics sprite-kit

是否可以将两个(更多)SKPhysicsBodys添加到一个SKNode?与此类似的东西: Example from PhysicsEditor 因为角色的头部应该与球碰撞,顶部应该是圆的。此外球不能通过球员。你知道如何做到这一点吗?

3 个答案:

答案 0 :(得分:5)

正如physicsBody property on SKNode所暗示的那样,节点和物理体之间存在一对一的关系。

但是,这并不意味着每个可见的精灵都必须有一个基本形状。您可以采取一些方法来完成您正在寻找的内容:

  • 顶部真的需要四舍五入吗?你可以用矩形覆盖大部分猴子艺术品。 (我认为你想要一个圆顶,所以碰撞在不同的方向反弹。)
  • 创建使用多边形后的“圆头矩形”形状。您必须选择一些边来近似适合您应用的曲线:太多并且它会减慢物理模拟的速度,太少而且当其他物体反弹时它不会像圆形一样。
  • 每个人都需要一个节点,但不是每个节点都需要一个可见的精灵。你可以用两个节点制作你的猴子:一个持有艺术并且附有方形或圆形物理体的节点,另一个节点有另一个物理体,通过固定接头连接, 但没有艺术。

答案 1 :(得分:2)

这是谷歌对这个问题的最大打击,所以我想我会更新答案。这是可能的(尽管可能不是在2013年),根据Mike S在this post中的回答。

您需要使用

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

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

因此,您可以使用其他实体创建一个实体,并将该实体添加到SKnode

答案 2 :(得分:0)

不,每个SKNode只能有一个SKPhysicsBody,因为physicsBodySKNode的单个属性。就像rickster所说的那样,你的第一个选择是使用bodyWithEdgeLoopFromRect:的{​​{1}}类方法使猴子成为一个筒仓形状的物理体。

您的另一个选择是创建两个单独的SKPhysicsBody并使用SKNodes附加它们。 rickster的答案很棒,但我只是想给出类名,以防你想做一些谷歌搜索。