我刚刚开始使用A型镜架进行开发,如果答案显而易见,请原谅。 在我的项目中,我想获得用户正在看的天空的位置。为此,我在相机内安装了一个光线投射器,到目前为止效果还不错。
HTML
<a-camera listener>
<a-entity raycaster="far: 1000" position="0 -0.9 0" rotation="0 0 0"></a-entity>
</a-camera>
<a-sky follow-intersection
id="sky"
src="#skybox-image">
</a-sky>
TS
AFRAME.registerComponent("follow-intersection", {
init: function() {
this.el.addEventListener("raycaster-intersected", evt => {
this.intersectingRaycaster = evt.detail.el.components.raycaster;
});
this.el.addEventListener("raycaster-intersected-cleared", () => {
this.intersectingRaycaster = null;
});
},
tick: function(t) {
if (!this.intersectingRaycaster) {
return;
}
const intersection = this.intersectingRaycaster.getIntersection(this.el);
if (intersection) {
let point = intersection.uv;
console.log(point.x, point.y);
}
到目前为止,这很好,问题是在我将光标设置在场景中后(项目所需)
<a-scene
cursor="rayOrigin: listener"
>
我总是会得到与光标不相交的交点。
我怎么只能得到相机的交叉点?谢谢!
答案 0 :(得分:0)
我认为a-scene
中的光标不是必需的。您可以这样做:
<a-camera listener>
<a-entity cursor raycaster="far: 1000" position="0 -0.9 0" rotation="0 0 0"></a-entity>
</a-camera>