Aframe 从世界位置计算本地系统中的位置。

Aframe calculate position in local system from world position.

我有一个组件可以动画到相机前面的某个位置,但是当它是另一个 object 的 child 时,这是在错误的方向上动画(远离相机) 因为它使用实体中的世界位置。

我知道这是因为世界坐标..谁能帮我告诉我如何将这个世界位置转换成本地坐标?

    pLocal= new THREE.Vector3(0, 0, -distX)
   this._targetPosition = pLocal.applyMatrix4(this._threeCamera.matrixWorld)

在这个例子中,盒子是球体的 child 并且动画远离相机。 https://jsfiddle.net/jpvsrnq1/2/

如果框不是 child,它会朝着相机动画。 https://jsfiddle.net/jpvsrnq1/3/

当它是另一个 object 的 child 时,我如何让它对相机进行动画处理?

您应该使用 worldToLocal() 方法:

来自 docs:

.worldToLocal ( vector : Vector3 ) : Vector3
Updates the vector from world space to local space.

通过使用 parent 上的方法:parentObj.worldToLocal(vec) 您可以将其世界位置应用于本地位置向量。 Fiddle here.

Fiddle here.


另一种方法是遍历 parent 个实体,并减去它们的位置,但它似乎与 worldToLocal 方法

相比没有任何优势