我使用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个精灵,而应该使用单独的精灵,以便没有球的角色精灵,带球的角色精灵和球本身,然后只需更改节点的纹理联络?
答案 0 :(得分:0)
由于movingBall
是bodyA.node
的孩子,其位置需要位于bodyA.node
的坐标空间中。所以,如果你给它坐标(0,0),它就在中间:
替换:
movingBall.position = contact.bodyA.node!.position
与
movingBall.position = CGPointZero
看看它的样子。球应该直接放在bodyA.node的顶部。