如何将新的精灵附加到移动的精灵?

时间:2015-07-24 17:22:32

标签: ios iphone swift sprite-kit

我使用SpriteKit进行有球和角色的游戏。角色与SKAction一致,用户可以通过触摸移动球。当球和角色接触时,我希望将球附加到角色上。

func didBeginContact(contact: SKPhysicsContact) {
     if contact.bodyA.categoryBitMask == charMask && contact.bodyB.categoryBitMask == ballMask{
        println("contact")
        if contactMade {
            let movingBall = contact.bodyB.node!.copy() as! SKSpriteNode
            //this line of code doesn't affect anything no matter what coordinates i set it to
            movingBall.position = contact.bodyA.node!.position
            contact.bodyB.node!.removeFromParent()
            contact.bodyA.node!.removeAllActions()
            contact.bodyA.node!.addChild(movingBall)

        }
    }
}

当前的问题是,当我联系.bodyA.node!.addChild(球)(角色节点)时,球会附加到角色的最左侧而不是角色上,并且它似乎设置了移动球。位置不会影响它。我还尝试将addChild添加到场景中,虽然它将球添加到正确的位置,但它没有移动到没有其他SKAction的角色。我做错了什么/我该怎么做才能解决它?

另外,我不应该使用这样的2个精灵,而应该使用单独的精灵,以便没有球的角色精灵,带球的角色精灵和球本身,然后只需更改节点的纹理联络?

1 个答案:

答案 0 :(得分:0)

由于movingBallbodyA.node的孩子,其位置需要位于bodyA.node的坐标空间中。所以,如果你给它坐标(0,0),它就在中间:

替换:

movingBall.position = contact.bodyA.node!.position

movingBall.position = CGPointZero

看看它的样子。球应该直接放在bodyA.node的顶部。