我正在使用以下代码在我的基于SpriteKit的游戏中占据一席之地:
var floorNode = SKSpriteNode()
var floorBody = SKPhysicsBody(edgeFromPoint: CGPointMake(self.frame.minX, self.frame.minY), toPoint: CGPointMake(self.frame.maxX, self.frame.minY))
floorNode.physicsBody = floorBody
addChild(floorNode)
这会按预期在屏幕底部放置一个楼层。然而,随着我向场景添加更多内容,地板的一端最终会下沉,场景中停留在其上的所有东西都会滑入深渊。
我完全失去了,因为Apple的文档说“基于边缘的物体没有质量或体积,并且不受系统中的力或冲动的影响。基于边缘的物体用于表示无体积物理模拟中的边界或空心空间。“
其他人是否看到过这种行为?
答案 0 :(得分:0)
为场景定义地板的最简单方法,无需向其添加任何节点:
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
其中self
是您的SKScene
。
如果您不想在场景中使用天花板,请将physicsBody
定义为:
[SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(self.frame.origin.x,
self.frame.origin.y,
self.frame.size.width,
self.frame.size.height*5)];