在SpriteKit中附加SpriteNodes

时间:2015-07-03 16:12:46

标签: swift sprite-kit

我正在制作一个游戏,其中涉及一个骑士,其盾牌在固定点上旋转。盾牌和骑士必须拥有不同的物理身体,以便他们能够以不同的方式与射弹相互作用。我正在寻找一种方法将盾牌连接到骑士身上,以便他们将旋转在一起,骑士充当中心点。我曾经尝试过将盾牌作为一个孩子添加到骑士身上,但这会将中心旋转点改变到它们之间的某个位置,导致骑士偏离中心。

        var knight = SKSpriteNode()
        var shield = SKSpriteNode()        

        // KNIGHT

        var knightSkin = SKTexture(imageNamed: "PlaceholderKnight.png")

        knight = SKSpriteNode(texture: knightSkin)
        let knightResize = SKAction.scaleBy(0.6, duration: 0.0)
        knight.runAction(knightResize)
        knight.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
        knight.zPosition = 100

        let knightSize = CGSizeMake(knight.frame.size.width, knight.frame.size.height)
        knight.physicsBody = SKPhysicsBody(rectangleOfSize: knightSize)

        self.addChild(knight)

        // SHIELD

        var shieldSkin = SKTexture(imageNamed: "PlaceholderShield.png")

        shield = SKSpriteNode(texture: shieldSkin)
        shield.zPosition = 100

        let shieldSize = CGSizeMake(shield.frame.size.width, shield.frame.size.height)
        shield.physicsBody = SKPhysicsBody(rectangleOfSize: shieldSize)

        knight.addChild(shield)

1 个答案:

答案 0 :(得分:1)

你想要一个contents。有许多类型的物理关节,它们都允许物理体相互作用,一起移动等。例如,一个引脚将允许两个物理体围绕一个中心固定点旋转。

Apple Develop Page: SKPhysicsJoint

SKPhysicsJointPin Explanation