Swift 让精灵附在身体上

Swift 让精灵附在身体上,swift,sprite-kit,skspritenode,skphysicsbody,Swift,Sprite Kit,Skspritenode,Skphysicsbody,我正在制作一个精灵的动画,当它接触到另一个精灵时,会调用一个物理接触函数。然后,在这个函数中,我试图让精灵与另一个接触。它的主体是bodyA,但它是SKPhysicsBody,不能转换为SkSpritEndode。你有什么想法吗? 当接触时,函数被正确调用,我只是尝试获取身体接触的精灵。最后一个想法是让动作与我正在寻找的精灵相连,但我想当你拥有精灵时,这很容易 let shootCategory: UInt32 = 0x1 << 0 let enemyCategory

我正在制作一个精灵的动画,当它接触到另一个精灵时,会调用一个物理接触函数。然后,在这个函数中,我试图让精灵与另一个接触。它的主体是bodyA,但它是SKPhysicsBody,不能转换为SkSpritEndode。你有什么想法吗? 当接触时,函数被正确调用,我只是尝试获取身体接触的精灵。最后一个想法是让动作与我正在寻找的精灵相连,但我想当你拥有精灵时,这很容易

    let shootCategory: UInt32 = 0x1 << 0
    let enemyCategory: UInt32 = 0x1 << 1


    // Declaration of the SKPhysicsBody of the sprite wich will touch the other one
    sprite.physicsBody = SKPhysicsBody(circleOfRadius: (20))
    sprite.physicsBody?.usesPreciseCollisionDetection = true
    sprite.physicsBody?.categoryBitMask = shootCategory
    sprite.physicsBody?.collisionBitMask = shootCategory | enemyCategory
    sprite.physicsBody?.contactTestBitMask = shootCategory | enemyCategory
    sprite.physicsBody?.affectedByGravity = false

    // Declaration of the SKPhysicsBody of the sprite wich will be touched
    sprite.run(SKAction.group([moveAction, fadeInAction]))
    sprite.physicsBody = SKPhysicsBody(circleOfRadius: (20))
    sprite.physicsBody?.usesPreciseCollisionDetection = true
    sprite.physicsBody?.categoryBitMask = enemyCategory
    sprite.physicsBody?.collisionBitMask = shootCategory | enemyCategory
    sprite.physicsBody?.contactTestBitMask = shootCategory | enemyCategory
    sprite.physicsBody?.affectedByGravity = false


    func didBegin(_ contact: SKPhysicsContact) {

    if (contact.bodyA.categoryBitMask == enemyCategory) && (contact.bodyB.categoryBitMask == shootCategory){

        // I tried this to get the sprite wich the bodyB is attached to but it doesn't even build
        let sprite: SKSpriteNode = sprite.contact.bodyB
        contact.bodyA.removeAction(forKey: "moveToAction")
    }
}

let shootCategory:UInt32=0x1我最终发现解决方案非常简单:

    let Node = contact.bodyB.node as! SKSpriteNode

苹果文档的存在是有原因的,我建议使用它们