【问题标题】:Aframe ammo physics how to set bounciness or restitution?Aframe弹药物理如何设置弹力或恢复力?
【发布时间】:2021-01-14 18:08:19
【问题描述】:

在使用弹药物理时,我无法全局或基于每个网格更改恢复(弹力)。

到目前为止,我已经包含了这些库:

<script src="https://mixedreality.mozilla.org/ammo.js/builds/ammo.wasm.js"></script>
<script src = "./scripts/aframe-physics-system.js"></script>

添加到场景中:

physics="driver: ammo; debug: true;"

我尝试在那里定义恢复和摩擦,但这没有效果 - 我相信这在使用大炮时有效。

为模型添加了动态体:

<a-entity gltf-model="#egg0" id="egg" position="2 15 -5" ammo-body="type: dynamic;" ammo-shape="type: sphere; fit: manual; sphereRadius: 1.3;"></a-entity>

现在我真的不知道该怎么做,我已经尝试获取和设置我在网上找到的东西,但似乎没有很多例子同时使用 ammo 和 aframe :(

    el.body.setFriction(1);
    el.body.setRestitution(0.8);
    el.body.setDamping(0.2, 0.2);
    el.body.getRestitution();

这些什么都不做,而且日志中也没有出现错误?

如果有办法注销弹药属性,至少我有办法使用试错法,但甚至无法获得这些数字!

【问题讨论】:

    标签: aframe physics-engine bulletphysics ammo.js


    【解决方案1】:

    使用 ammo.js 恢复原状默认为零,这要求每个发生碰撞的对象都被赋予明确的值。

    下面的例子使用了一个球和地板:

    AFRAME.registerComponent("do-something", {
            init: function () {
              var sceneEl = this.el;
              var floorEl = sceneEl.querySelector("#floor");
              var ballEl = sceneEl.querySelector("#ball");
              floorEl.body.setRestitution(0.9);
              ballEl.body.setRestitution(0.8);
            },
          });
    
    <a-scene do-something>
    

    【讨论】:

      【解决方案2】:

      这方面有什么进展吗?

      结帐https://github.com/kripken/ammo.js/blob/master/ammo.idl 以查看您是否调用了正确的函数。如果你 console.log el.body 你会得到什么?

      如果 el.body 不起作用,请尝试 el.components[ "ammo-body" ].body 获取对主体的引用。

      您可能还需要使用body.upcast 来获取btCollisionObject,然后在上面调用setFriction

      【讨论】:

        猜你喜欢
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-14
        • 2016-01-13
        • 2021-12-15
        相关资源
        最近更新 更多