SKScene.anchorPoint如何影响physicsBody?

时间:2014-08-02 11:10:05

标签: ios swift sprite-kit skscene

当我从屏幕(from default 0,0 to 0.5,0.5)更改了gameScene的disappeared精神版物debugging with kView.showsPhysics = true的anchorBody时。

它仍然存在,因为每艘船相互碰撞但看起来物理位置的位置被移动(在屏幕外)。

为什么这种变化影响了物理场景的孩子?

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        anchorPoint = CGPointMake(0.5, 0.5)
        physicsWorld.gravity = CGVector(0, 0)
    }

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        for touch: AnyObject in touches {
            let location = touch.locationInNode(self)

            let sprite = SKSpriteNode(imageNamed:"Spaceship")

            sprite.physicsBody = SKPhysicsBody(circleOfRadius: 100)

            sprite.xScale = 0.5
            sprite.yScale = 0.5
            sprite.position = location

            let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1)

            sprite.runAction(SKAction.repeatActionForever(action))

            self.addChild(sprite)
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我做了同样的事情。我把SKScene的锚点也放在中间(CGPointMake(0.5,0.5)),它完全破坏了物理学。您会注意到这一点,特别是在物理场景中添加关节时,您将无法将物理关节锚点放在正确的位置。

我的建议,如果使用SKPhysics,请不要更改SKScene锚点(花费我很多时间并重写以找出)。

答案 1 :(得分:0)

更改场景的锚点不会改变物理世界的坐标。每个节点及其物理体都是如此。使用您自己的节点,您可以使用特殊的SKPhysicsBody init补偿中心:(拥有节点坐标系中的中心)。

至于物理世界,你现在无能为力。