我试图将一个physicsBody添加到一个矩形的SKShapeNode中。我使用fromEdgesWithLoop构建了我的fromEdgesWithLoop,使用Node的框架作为CGRect来构建它。
使用debug选项来显示PhysicsBody,我发现它实际上不是以我的Sprite为中心的。

我在网上搜索,发现我应该使用这个:
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)发布于 2015-11-21 22:28:11
边缘循环的位置相对于它所连接的节点。一般来说,对于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)https://stackoverflow.com/questions/33809163
复制相似问题