我在搅拌机中构建了一个风景模型,导出到.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}]];
答案 0 :(得分:1)
如果在为节点创建物理主体时没有指定其他选项,那么获得的是包含该节点几何的convex hull。
因为您的景观是静态物体,所以您可以使用更接近几何体的凹形。 (请注意,这仅适用于静态实体。)为此,您需要:
bodyWithShape:type:
方法创建正文,而不是staticBody
。SCNPhysicsShape
。使用shapeWithGeometry:options:
或shapeWithNode:options:
创建一个。SCNPhysicsShapeTypeKey
和对应值SCNPhysicsShapeTypeConcavePolyhedron
的字典。