Ios7 精灵套件-向一个节点添加两个物理实体

Ios7 精灵套件-向一个节点添加两个物理实体,ios7,physics,sprite-kit,Ios7,Physics,Sprite Kit,是否可以将两个(或更多)SKPhysicsBody添加到一个SKNode?类似于此: 因为角色的头部应该与球碰撞,所以顶部应该是圆形的。此外,球不能穿过球员。你知道如何做到这一点吗?正如图中所示,节点和物理体之间存在一对一的关系 然而,这并不意味着每个可见精灵都必须有一个基本形状。您可以采取以下几种方法来实现您的目标: 顶部真的需要倒圆吗?你可以用一个长方形覆盖大部分的猴子艺术。(我想你想要一个圆形的顶部,这样碰撞会向不同的方向反弹。) 使用多边形后,创建“圆端矩形”形状。你必须选择一些边来近

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

正如图中所示,节点和物理体之间存在一对一的关系

然而,这并不意味着每个可见精灵都必须有一个基本形状。您可以采取以下几种方法来实现您的目标:

  • 顶部真的需要倒圆吗?你可以用一个长方形覆盖大部分的猴子艺术。(我想你想要一个圆形的顶部,这样碰撞会向不同的方向反弹。)
  • 使用多边形后,创建“圆端矩形”形状。你必须选择一些边来近似适合你的应用程序的曲线:太多的边会减慢物理模拟,太少的边不会在其他物体反弹时表现得像一个圆
  • 每个身体都需要一个节点,但不是每个节点都需要一个可见的精灵。你可以用两个节点制作你的猴子:一个节点持有艺术并连接方形或圆形物理体,另一个节点通过固定关节连接另一个物理体, 但是没有艺术

  • 否,每个
    SKNode
    只能有一个
    SKPhysicsBody
    ,因为
    physicsBody
    SKNode
    的单个属性。如前所述,您的第一个选择是使用
    SKPhysicsBody
    bodyWithEdgeLoopFromRect:
    类方法将猴子制作成一个筒仓形物理体


    您的另一个选项是创建两个单独的
    SKNodes
    ,并使用
    skphysicjointfixed
    将它们连接起来s的答案很好,但我只是想给出类名,以防你想在谷歌上搜索一下。

    这是这个问题在谷歌上最热门的答案,所以我想我应该更新答案。这是可能的(尽管在2013年可能没有),根据Mike S在年的回答

    你需要使用

    // Swift
    SKPhysicsBody(bodies: <#[AnyObject]#>) 
    
    // Obj-c
    [SKPhysicsBody bodyWithBodies:(NSArray *)bodies]
    
    //Swift
    SKPhysicsBody(Body:)
    //Obj-c
    [SKPhysicsBodywithBodys:(NSArray*)Bodys]
    

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

    只需注意,iOS 8现在允许您使用BodyWithBody:,将两个物理实体添加到一个SKnode,如SKPhysicsBody.BodyWithBody(实体:AnyObject[])。请注意,子实体上的特性(例如质量或摩擦力)将被忽略。仅使用子实体的形状。如果您需要一个具有多个命中目标(例如身体与头部)的节点,那么您需要按照Ricker在要点3中的建议进行操作。事实并非如此,您可以使用+(SKPhysicsBody*)BodyWithBodys:methodUse+(SKPhysicsBody*)BodyWithBodys:method设置多个Bodys