SKShapeNode 的框架偏移
Frame of SKShapeNode is offset
我正在尝试将 physicsBody
添加到矩形的 SKShapeNode
。我使用 fromEdgesWithLoop
构建了我的 PhysicsBody
,使用 Node
的框架作为 CGRect
来构建它。
使用调试选项显示 PhysicsBody
,我发现它实际上没有以我的 Sprite 为中心。
我在网上搜索发现我应该使用这个:
scene.scaleMode = .ResizeFill
遗憾的是,我尝试了所有 scaleMode
并且没有任何差异。
我还验证了 GameScene
的尺寸,它适合 iPad2 屏幕(我的目标),1024x720。
SKShapeNode
是场景的子项。
在添加 PhysicsBody
及其框架之前,我尝试将节点的位置设置在 Scene
的中心,但这没有任何改变。该节点已经在场景的中心。
myShape.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
myShape.physicsBody = SKPhysicsBody(edgeLoopFromRect: myShape.frame)
边缘循环的位置是相对于它所连接的节点的。通常,对于 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)
我正在尝试将 physicsBody
添加到矩形的 SKShapeNode
。我使用 fromEdgesWithLoop
构建了我的 PhysicsBody
,使用 Node
的框架作为 CGRect
来构建它。
使用调试选项显示 PhysicsBody
,我发现它实际上没有以我的 Sprite 为中心。
我在网上搜索发现我应该使用这个:
scene.scaleMode = .ResizeFill
遗憾的是,我尝试了所有 scaleMode
并且没有任何差异。
我还验证了 GameScene
的尺寸,它适合 iPad2 屏幕(我的目标),1024x720。
SKShapeNode
是场景的子项。
在添加 PhysicsBody
及其框架之前,我尝试将节点的位置设置在 Scene
的中心,但这没有任何改变。该节点已经在场景的中心。
myShape.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
myShape.physicsBody = SKPhysicsBody(edgeLoopFromRect: myShape.frame)
边缘循环的位置是相对于它所连接的节点的。通常,对于 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)