aframe a-physics检测碰撞b / w 2静态物体

时间:2017-07-03 07:28:33

标签: javascript aframe

嗨,我是aframe的新手,并且尝试进行碰撞检测b / w 2具有附着静电体成分的物体。

我不知道为什么事件碰撞没有被解雇,因为它的工作正常b / w 1动态和1静态体,但不能使用2个静态物体。

请建议一种方法,使用物理学检测碰撞b / w 2静态物体,或者是否有其他方式让我知道。

我使用setInterval()移动静态身体并使用setAttribute('position','x y z');

更改其位置

提前感谢。

1 个答案:

答案 0 :(得分:1)

来自 a-frame physics documentation

  

static-body:固定位置或动画对象。其他对象可能   与静态物体碰撞,但静态体本身   不受重力和碰撞的影响。

静态物体不受碰撞影响。

<小时/> 如果它们不能是动态的,我会建议在刻度线上跟踪它们的位置+音量并检查它们是否发生碰撞(原始对象应该很容易)。


如果你有两个球体(s(x1,y1,z1)和s2(x2,y2,z2)),你可以在场景中添加一个主要组件,用一个简单的方法检查它们之间的距离2点之间的距离formula

 tick:function(){
   if(Math.sqrt(Math.pow((x1-x2),2) + Math.pow((y1-y2),2) + Math.pow((z1-z2),2)))<(sRadius+s2Radius)){
   //do stuff when spheres collide
   }
 }

从我看到的,three.js有自己的交叉方法,你可以找到它们here(方法:intersect()intersectsBox()等等......)。要访问three.js对象,请获取el.object3D引用。

交叉点对象的定义如下:

{ distance, point, face, faceIndex, indices, object }
distance – distance between the origin of the ray and the intersection
point – point of intersection, in world coordinates
face – intersected face
faceIndex – index of the intersected face
indices – indices of vertices comprising the intersected face
object – the intersected object

three.js documentation中所述。

对于其他基元的交集,你需要研究交叉点的算法,因为我脑海中的算法非常低效。