我编写了一个立方体,用于在iOS的scenekit中滑过地板,但它却沉入地板

时间:2016-04-01 03:06:42

标签: ios objective-c scenekit scnnode skphysicsworld

我目前有一个场景,其中立方体被放置在scenekit的地板上。我让立方体动画在x轴上移动穿过地板,虽然它稍微下沉到地板上,然后重新定位在地板上。

这里只是一些代码:

// create floor
SCNFloor *mainFloor = [SCNFloor floor];
SCNNode *floorNode = [SCNNode nodeWithGeometry:mainFloor];
floorNode.position = SCNVector3Make(0.0, -4.0, 0.0);
[myScene.rootNode addChildNode:floorNode];
SCNPhysicsShape *ground = [SCNPhysicsShape shapeWithGeometry:mainFloor options:nil];
SCNPhysicsBodyType kin = SCNPhysicsBodyTypeKinematic;
SCNPhysicsBody *solid = [SCNPhysicsBody bodyWithType:kin shape:ground];
floorNode.physicsBody = solid;
myScene.physicsWorld.gravity = SCNVector3Make(0.0, -9.8, 0.0);

有人可以帮我找出立方体下沉的原因吗?如果你无法弄清楚原因,也许你可以提供角色可以走的工作场所的示例代码? (希望在目标c中,但如果需要,我可以从swift转换)

2 个答案:

答案 0 :(得分:0)

我认为你的地板的类别位掩码和你的立方体的碰撞位掩码应该是相同的 你可以这样做(快速):

floorNode.physicsBody.categoryBitMask = 3
cubeNode.physicsBody.collisionBitMask = 3

答案 1 :(得分:0)

使用ProBlaster的建议,我使用了[SCNPhysicsBody applyForce],这解决了这个问题。