1

我目前有一个场景,其中一个立方体被放在场景包中的地板上。我为立方体设置了动画,使其在地板上的 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 翻译)

4

2 回答 2

0

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

floorNode.physicsBody.categoryBitMask = 3
cubeNode.physicsBody.collisionBitMask = 3
于 2016-04-01T18:24:35.953 回答
0

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

于 2016-04-04T01:52:22.847 回答