【问题标题】:SpriteKit: child does not rotate with parent SKNodeSpriteKit:孩子不与父SKNode一起旋转
【发布时间】:2025-12-22 13:20:23
【问题描述】:

目标是使用角速度而不是 zRotation 围绕一个点旋转物理体。因此,似乎有必要添加第二个物理体(控制旋转的那个),但是改变这个父级的角速度不会移动子级。换句话说,父级旋转,但子级保持在原地。

如何同时旋转父子节点?

   parent = SKNode()
   sprite = SKSpriteNode(color: SKColor.whiteColor(), size: spriteSize)
   sprite.position = CGPoint(x: 0, y: 50)
   parent.addChild(sprite)

   parent.physicsBody = SKPhysicsBody(rectangleOfSize: parentSize)
   parent.physicsBody?.affectedByGravity = false
   parent.physicsBody?.friction = 0
   parent.physicsBody?.linearDamping = 0
   parent.physicsBody?.angularDamping = 0
   parent.physicsBody?.collisionBitMask = 0

   sprite.physicsBody = SKPhysicsBody(rectangleOfSize: spriteSize)
   sprite.physicsBody?.affectedByGravity = false
   sprite.physicsBody?.friction = 0
   sprite.physicsBody?.linearDamping = 0
   sprite.physicsBody?.angularDamping = 0
   sprite.physicsBody?.categoryBitMask = bitMask
   sprite.physicsBody?.collisionBitMask = 0

   parent.physicsBody?.angularVelocity = 2.0

【问题讨论】:

    标签: ios swift sprite-kit


    【解决方案1】:

    您可以在设置角速度之前尝试在父子之间创建关节

    let fixedJoint = SKPhysicsJointFixed()
    fixedJoint.bodyA = parent.physicsBody
    fixedJoint.bodyB = sprite.physicsBody
    self.physicsWorld.addJoint(fixedJoint)
    

    【讨论】: