SCNNode静态正文与.dae导致问题

时间:2014-12-16 11:06:14

标签: ios objective-c blender scenekit

我在搅拌机中构建了一个风景模型,导出到.dae并添加到我的xcode项目中。

我已经加载了场景,然后将子项(横向网格网格)附加到我的landscapeNode,这样可以完美地加载。

然而,当我将一个静态物理体附加到landscspeNode时,我的heroNode似乎在试图飞越陆地时撞到了一堵无形的墙上。

我正在寻找的功能是与我建模的土地明显的碰撞,因此英雄节点无法飞越陆地并被迫在其周围移动。

注意:我没有在搅拌机中进行任何y轴转换,也没有简单地将节点旋转90度关于-x轴。

编辑:代码我试图添加物理形状

landscapeNode.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeStatic shape:[SCNPhysicsShape shapeWithNode: [landscapeScene.rootNode childNodeWithName:@"Grid" recursively:NO] options:@{SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeConcavePolyhedron}]];

landscapeNode.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeStatic shape:[SCNPhysicsShape shapeWithNode: landscapeNode options:@{SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeConcavePolyhedron}]];

landscapeNode.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeStatic shape:[SCNPhysicsShape shapeWithGeometry: landscapeNode.geometry options:@{SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeConcavePolyhedron}]];

1 个答案:

答案 0 :(得分:1)

如果在为节点创建物理主体时没有指定其他选项,那么获得的是包含该节点几何的convex hull

因为您的景观是静态物体,所以您可以使用更接近几何体的凹形。 (请注意,这仅适用于静态实体。)为此,您需要:

  1. 使用bodyWithShape:type:方法创建正文,而不是staticBody
  2. 对于该方法,您需要传递SCNPhysicsShape。使用shapeWithGeometry:options:shapeWithNode:options:创建一个。
  3. 对于选项参数,请传递包含密钥SCNPhysicsShapeTypeKey和对应值SCNPhysicsShapeTypeConcavePolyhedron的字典。