基于边缘的SKPhysicsBody随着时间的推移而移动

时间:2014-08-10 02:17:33

标签: ios sprite-kit skphysicsbody

我正在使用以下代码在我的基于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的文档说“基于边缘的物体没有质量或体积,并且不受系统中的力或冲动的影响。基于边缘的物体用于表示无体积物理模拟中的边界或空心空间。“

其他人是否看到过这种行为?

1 个答案:

答案 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)];