嗨,我是aframe的新手,并且尝试进行碰撞检测b / w 2具有附着静电体成分的物体。
我不知道为什么事件碰撞没有被解雇,因为它的工作正常b / w 1动态和1静态体,但不能使用2个静态物体。
请建议一种方法,使用物理学检测碰撞b / w 2静态物体,或者是否有其他方式让我知道。
我使用setInterval()
移动静态身体并使用setAttribute('position','x y z');
提前感谢。
答案 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
对于其他基元的交集,你需要研究交叉点的算法,因为我脑海中的算法非常低效。