0

この問題はStackOverflow_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)
}

ヒーローのテスト UI は単なる灰色の円であり、彼が押されたときに子ノード "topMacheteSwing" が彼と一緒に移動するようにしたいと考えています。それらを一緒に固定するとこれが行われると思いましたが、そうではありません。

よろしくお願いいたします。

4

1 に答える 1

1

したがって、複数の可能な解決策を検討した後、答えは固定されたジョイントを使用せず、代わりにマチェーテをヒーローに固定し、物理ジョイントをまったく使用しないことであることに気付きました

topMacheteSwing.physicsBody!.pinned = true
于 2016-04-10T19:37:50.547 に答える