当我从屏幕(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)
}
}
}
答案 0 :(得分:0)
我做了同样的事情。我把SKScene的锚点也放在中间(CGPointMake(0.5,0.5)),它完全破坏了物理学。您会注意到这一点,特别是在物理场景中添加关节时,您将无法将物理关节锚点放在正确的位置。
我的建议,如果使用SKPhysics,请不要更改SKScene锚点(花费我很多时间并重写以找出)。
答案 1 :(得分:0)
更改场景的锚点不会改变物理世界的坐标。每个节点及其物理体都是如此。使用您自己的节点,您可以使用特殊的SKPhysicsBody init补偿中心:(拥有节点坐标系中的中心)。
至于物理世界,你现在无能为力。