gpt4 book ai didi

javascript - Aframe 动态体通过 collada 静态体地板坠落

转载 作者:行者123 更新时间:2023-12-01 04:51:02 25 4
gpt4 key购买 nike

使用 aframe 和 aframe-physics-system 我注意到一个问题,即“动态体”正在通过一个简单的基于 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-model 做同样的事情(内联示例):
<a-entity dynamic-body gltf-model="url(url/to/gltfmodel.gltf)" mixin="collision"></a-entity>

引用文献: https://github.com/donmccurdy/aframe-physics-system

关于javascript - Aframe 动态体通过 collada 静态体地板坠落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41087921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com