使用框架和框架物理系统,我注意到一个问题,其中“动态物体”通过基于简单Collada的“静态物体”掉落。
所有的动态物体都应该在蓝色地板上弹跳,但是在我的情况下,除了球体之外的所有物体都从地板上掉下来。我不知道为什么。
这是jsfiddle示例:
https://jsfiddle.net/9z9e1jtk/
<a-scene fog="type: linear; color: #FFEBDE; far:195" >
<a-assets>
<a-asset-item id="ground" src="https://cdn.rawgit.com/7ammer/testfiles/master/aframe-ground-physics/floor.dae"></a-asset-item>
</a-assets>
<a-entity camera
universal-controls
jump-ability
kinematic-body
position="0 2 10">
</a-entity>
<a-box color="red"
dynamic-body
position="0 10 0"
height="4"></a-box>
<a-cylinder color="#ddb424"
position="-5 10 0"
dynamic-body></a-cylinder>
<a-sphere color="#ddb424"
position="5 5 0"
dynamic-body></a-sphere>
<a-entity static-body collada-model="#ground"></a-entity>
</a-scene>
最佳答案
Aframe 0.9.0及更高版本不再支持Collada。在aframe-extras v.6.0.0及更高版本中为需要的人提供了支持。引用:https://github.com/aframevr/aframe/issues/3793
您可以使用gltf或aframe实体作为基础。
一个例子:
<a-entity id="ground" geometry="primitive: plane; height: 500; width: 500" material=" opacity:0.0" position="0 0 0" static-body rotation="90 0 0"></a-entity>
重要的是,您使用
collision-filter
。这意味着您为您的实体及其应与之碰撞的每个实体声明一个组。使用group:name
和collidesWith: groupname
进行此操作。如果您想使其变得简单,则可以为每个应该发生碰撞的项目声明一个组。因此,您将组名设置为组1,并使其与组1冲突。看起来像这样:
<a-entity id="ground" geometry="primitive: plane; height: 500; width: 500" material=" opacity:0.0" position="0 0 0" static-body rotation="90 0 0"
collision-filter="group: group1; collidesWith: group1"></a-entity>
您的其他实体(例如多维数据集或gltf模型)需要获取相同的标签。
<a-box collision-filter="group: group1; collidesWith: group1"> </a-box>
为了使它更加容易,只需声明一个a-mixin元标记并将其传递给应该具有碰撞功能的每个项目:
<a-mixin id="collision" dynamic-body collision-filter="group: group1; collidesWith: group1"></a-mixin>
<a-box mixin="collision"></a-box>
<a-entity id="ground" geometry="primitive: plane; height: 500; width: 500" material=" opacity:0.0" position="0 0 0" static-body rotation="90 0 0"
mixin="collision"></a-entity>
使用gltf模型进行相同的操作(内联示例):
<a-entity dynamic-body gltf-model="url(url/to/gltfmodel.gltf)" mixin="collision"></a-entity>
引用:https://github.com/donmccurdy/aframe-physics-system