我在 blender 中建立了一个景观模型,导出为 .dae 并添加到我的 xcode 项目中。
我已经加载了场景,然后将 child (景观网格网格)附加到我的景观节点,这完美加载。
但是,当我将静态物理实体附加到 landscspeNode 时,我的 heroNode 似乎在尝试飞越陆地时撞到了看不见的墙上。
我正在寻找的功能是与我建模的土地的明显碰撞,因此 heroNode 无法飞过土地并被迫在其周围移动。
注意:我没有在 blender 中对 y 轴进行任何转换,xcode 也没有只是简单地将节点围绕 -x 轴旋转 90 度。
编辑:我尝试添加物理形状的代码
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}]];
Best Answer-推荐答案 strong>
如果您在为节点创建物理体时没有指定其他选项,则会得到 convex hull包含该节点的几何形状。
由于您的景观是一个静态物体,您可以使其使用更接近几何形状的凹形。 (请注意,这仅适用于静态实体。)为此,您需要:
- 使用
bodyWithShape:type: 创建主体的方法,而不是 staticBody 。
- 对于该方法,您需要传递
SCNPhysicsShape .使用 shapeWithGeometryptions: 或 shapeWithNodeptions: 创建一个。
- 对于 options 参数,传递包含键
SCNPhysicsShapeTypeKey 和对应值 SCNPhysicsShapeTypeConcavePolyhedron 的字典。
关于ios - 带有 .dae 的 SCNNode 静态主体导致问题,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/27503183/
|