Прикрепленный дочерний узел не перемещается со своим родительским узлом

Я нашел эту проблему, которая звучит похоже на Stackru_24965533, но принятый ответ не работает в 9.3.

Пример того, что я вижу: ссылка на изображение здесь

Мой код:

func addtopMachete() {

    let topMacheteTexture = SKTexture(imageNamed: "machete.png")
    topMacheteSwing = SKSpriteNode(texture: topMacheteTexture)
    topMacheteSwing.name = "topMacheteSwing_Node"
    topMacheteSwing.anchorPoint = CGPoint(x: 0.0, y: 0.0)

    let newX = topMacheteSwing.position.x
    let newY = topMacheteSwing.position.y + (hero.size.height / 2)
    let newLocation = CGPointMake(newX, newY)

    topMacheteSwing.position = newLocation
    topMacheteSwing.zRotation = -0.45

    let movetopMacheteSwing = SKAction.rotateToAngle(2.75, duration: 3)

    let removetopMacheteSwing = SKAction.removeFromParent()

    let moveAndRemovetopMacheteSwing = SKAction.sequence([movetopMacheteSwing, removetopMacheteSwing])

    topMacheteSwing.runAction(moveAndRemovetopMacheteSwing)

    topMacheteSwing.physicsBody = SKPhysicsBody(rectangleOfSize: topMacheteSwing.size, center: CGPointMake(topMacheteSwing.size.width / 2, topMacheteSwing.size.height / 2))

    topMacheteSwing.physicsBody!.dynamic = false
    topMacheteSwing.physicsBody!.affectedByGravity = false
    topMacheteSwing.physicsBody!.categoryBitMask = ColliderType.macheteContact.rawValue
    topMacheteSwing.physicsBody!.contactTestBitMask = ColliderType.monsterContact.rawValue | ColliderType.monster2HPContact.rawValue | ColliderType.riotShieldContact.rawValue
    topMacheteSwing.physicsBody!.usesPreciseCollisionDetection = true

    let topMacheteJoint = SKPhysicsJointFixed.jointWithBodyA(hero.physicsBody!, bodyB: topMacheteSwing.physicsBody!, anchor: CGPoint(x: CGRectGetMaxX(hero.frame), y: CGRectGetMaxY(hero.frame)))

    hero.addChild(topMacheteSwing)
    self.physicsWorld.addJoint(topMacheteJoint)
}

Тестовый интерфейс героя - это просто серые кружки, и когда он нажал, я бы хотел, чтобы дочерний узел "topMacheteSwing" двигался вместе с ним. Я предполагал, что связывание их вместе сделает это, но это не так.

Ваша помощь очень ценится.

1 ответ

Поэтому, поработав над несколькими возможными решениями, я понял, что ответом было не использовать закрепленное соединение, а вместо этого просто прикрепить мачете к герою и вообще не использовать физическое соединение

topMacheteSwing.physicsBody!.pinned = true
Другие вопросы по тегам