swift - 在 SpriteKit 中附加 SpriteNode

标签 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)

最佳答案

您需要一个SKPhysicsJoint。物理关节有多种类型,它们都允许物理体一起相互作用、一起移动等。例如,一个销可以让两个物理体围绕一个中心固定点旋转。

Apple Develop Page: SKPhysicsJoint

SKPhysicsJointPin Explanation

关于swift - 在 SpriteKit 中附加 SpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210830/

相关文章:

ios - 从不是 SKScene 的屏幕访问 Sprite 图集

swift - 整洁、干净地访问 SKNode

ios - 全局变量和 Alamofire 的问题

ios - 执行 Segue 在 iOS 10 中崩溃

ios - 仅检测主节点/父节点上的点击,而不是子节点

Swift3 SpriteKit : Shooting bullets at angles

swift - 如何在核心数据中使用 swift 4 Codable?

ios - Lottie 在 iOS 上与用户交互

swift - 如何在 Xcode 11/Swift 5.1 中使用 Swift Package Manager 创建动态框架(像 Carthage 那样)?

ios - 将文本字段添加到 SKScene