我正在尝试将physicsBody
添加到SKShapeNode
这是一个矩形。我使用PhysicsBody
使用fromEdgesWithLoop
框架作为Node
来构建我的CGRect
来构建它。
使用调试选项显示PhysicsBody
,我发现它实际上并不以我的精灵为中心。
我在网上搜索发现我应该使用它:
scene.scaleMode = .ResizeFill
可悲的是,我尝试了所有scaleMode
并且没有任何差异。
我还验证了GameScene
的尺寸,它适合iPad2屏幕(我的目标),1024x720。
SKShapeNode
是场景的孩子。
在添加Scene
及其框架之前,我尝试将节点的位置设置在PhysicsBody
的中心位置,但这没有任何改变。节点已经在场景的中心。
myShape.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
myShape.physicsBody = SKPhysicsBody(edgeLoopFromRect: myShape.frame)
答案 0 :(得分:3)
Edge Loop的位置相对于它所连接的节点。通常,对于edgeLoopFromRect
,位置由
edge_loop_position = node.position + rect.frame.origin
在这种情况下,您的物理主体会被myShape
的位置偏移。解决此问题的一种方法是将边循环附加到场景而不是形状节点:
self.physicsBody = SKPhysicsBody(edgeLoopFromRect: myShape.frame )
或者,您可以使用
从帧的位置减去节点的位置let rect = CGRect(origin:CGPoint(x:myShape.frame.origin.x-myShape.position.x, y:myShape.frame.origin.y-myShape.position.y), size:myShape.frame.size)
myShape.physicsBody = SKPhysicsBody(edgeLoopFromRect:rect)