我在 iOS 的 scenekit 中编写了一个立方体在地板上滑动的程序,但它会沉入地板

I programmed a cube to slide across the floor in scenekit for iOS, it sinks into the floor though

我目前在 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);

谁能帮我找出立方体下沉的原因?如果您不明白为什么,也许您可​​以提供角色可以行走的工作楼层的示例代码? (希望在 objective c 中,但如果需要,我可以从 swift 翻译)

我认为你地板的类别位掩码和你的立方体的碰撞位掩码应该是一样的 您可以这样做(在 swift 中),如下所示:

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

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