具有超级手的不可重叠球体和使用A帧的aframe物理系统

时间:2017-11-29 03:47:10

标签: aframe aframe-super-hands

我正试图在A-Frame(科学)中重建一个电子粒子(电子,中子,质子)。我正在使用<a-sphere>来表示带电粒子,而我正用超级手来移动它。我创建了一个根据收费吸引或排斥的自定义组件(复习:相反的收费吸引;类似的收费排斥)。

每个球体都是浮动的(位置=“0 1 0”),用户应抓住它并将其移近另一个球体以观察吸引力或排斥效果。

到目前为止,吸引力和排斥力正在发挥作用。我唯一需要注意的是,每当我用超级手将它拖到另一个<a-sphere>时,a-sphere就会重叠。我知道这是所有元素的默认行为。我一直在尝试使用aframe-physics-system来防止元素重叠。

由于我需要a-sphere悬停,我将static-body添加到它们(我注意到这不会阻止重叠)。每当我尝试使用HTC Vive控制器抓住它们时,控制器似乎都有某种与静电体相互作用的碰撞器,将其推到一边。如果我设法抓住它,它开始旋转球体失控(可能是因为它与Vive控制器交互),并且它启动它(非常有趣,说实话)。

我也尝试将引力设置为零,但这会产生一个问题:它会影响整个场景(之后不能有正常的物理)。此外,每当球体被另一个物体击中时,它将无限地移动到施加力的方向。

当我看到以下示例时: https://wmurphyrd.github.io/aframe-super-hands-component/examples/physics/

我看到威廉使用动态身体。不幸的是,这使他们陷入了困境。

有关如何解决此问题的任何想法?我只是想让球体不可重叠,并允许用户在悬停时抛出它。

以下是代码:

<a-entity progressive-control="objects: [grabbable], [hoverable]">
          <a-entity id="rhand" class="right-controller"></a-entity>
          <a-entity id="lhand" class="left-controller"></a-entity>
 </a-entity>

    <a-sphere hoverable grabbable stretchable draggable dropppable static-body 
    material="color: #e53935;" position="0 1 0" 
    radius="0.125" id="js-electron" particle-charge="electron">
   </a-sphere>

   <a-sphere hoverable grabbable stretchable draggable dropppable  static-body
   material="color: #1976d2;" position="0.5 1 0" 
   radius="0.125" id="js-proton" particle-charge="proton">
</a-sphere>

结果如下:

enter image description here

1 个答案:

答案 0 :(得分:1)

你可以解决控制器物理体与物体发生碰撞的问题,并使用aframe-physics-extras中的collision-filter几乎无法抓住它们:

<a-entity progressive-control="objects: [grabbable], [hoverable]">
          <a-entity id="rhand" class="right-controller" collision-filter="collisionForces: false"></a-entity>
          <a-entity id="lhand" class="left-controller" collision-filter="collisionForces: false"></a-entity>
 </a-entity>

这使得控制者的身体可以通过其他身体鬼魂而不会打扰他们,同时仍然允许抓取。

但是,我认为您无法从static-body获得所需的完整行为。它适用于墙壁和地板等无法响应的东西 物理力量和物理引擎因此而对它们的处理方式不同(例如,它永远不会对两个静态物体之间的碰撞作出反应,这就是为什么它不能防止重叠)。

sleepy结合零aframe-physics-extras查看{{1}} 重力。它通过对所有运动和旋转施加强减速来防止物体漂浮,但仍然让它们对被抛掷或与其他物体碰撞作出反应。 There is an example here