如果形状复杂,SCNPhysicsHingeJoint不旋转

时间:2014-11-03 09:48:07

标签: ios8 scenekit

我在SceneKit中联合旋转collada对象时发现了一个奇怪的行为。

想象一下,我使用这个代码制作旋转桌子(cheeta3d制作的复杂表格):

SCNScene *heroScene = [SCNScene sceneNamed:@"scene.dae"];
b = [heroScene.rootNode childNodeWithName:@"desk" recursively:YES];
b.physicsBody = [SCNPhysicsBody dynamicBody];
b.physicsBody.physicsShape=[SCNPhysicsShape shapeWithNode:b options:@{SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeConcavePolyhedron,SCNPhysicsShapeKeepAsCompoundKey:@YES}]; //**HERE we need YES only, if NO it is not rotating**!
[scene.rootNode addChildNode:b];
SCNPhysicsHingeJoint *joint = [SCNPhysicsHingeJoint jointWithBody:b.physicsBody axis:SCNVector3Make(0,1,0) anchor:SCNVector3Make(0,5,0)];
[scene.physicsWorld addBehavior:joint];

看评论// 这里我们只需要YES,如果不是它不旋转

我测试了所有病例,所有关节。 SCNPhysicsShapeKeepAsCompoundKey必须为YES,虽然我认为这里不是那么重要。

为什么?

1 个答案:

答案 0 :(得分:0)

SCNPhysicsShapeKeepAsCompoundKey默认为YES。据我所知,关闭了#34; flattenedCone"物理对象的版本。最有可能的是,当铰链接头仅连接到模型的一个部分而不是整个部件时,模型中的某些东西会阻止它旋转。