Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 光线投射器相交对象始终返回空数组_Javascript_Three.js - Fatal编程技术网

Javascript 光线投射器相交对象始终返回空数组

Javascript 光线投射器相交对象始终返回空数组,javascript,three.js,Javascript,Three.js,我试图得到一个光线投射器的交点,但不管怎样,它总是返回一个空数组 如何将对象添加到对象数组: var obstructionGeom = new THREE.BoxGeometry(6,5,0.5); var obstructionMaterial = new THREE.MeshBasicMaterial( {color: 0x000000} ); var obstruction1 = new THREE.Mesh(obstructionGeom, obstructionMaterial);

我试图得到一个光线投射器的交点,但不管怎样,它总是返回一个空数组

如何将对象添加到对象数组:

var obstructionGeom = new THREE.BoxGeometry(6,5,0.5);
var obstructionMaterial = new THREE.MeshBasicMaterial( {color: 0x000000} );
var obstruction1 = new THREE.Mesh(obstructionGeom, obstructionMaterial);
obstruction1.position.set(-10,0,-15);
obstruction1.name = "obstruction";
scene.add(obstruction1);
obstructions.push(obstruction1);
然后我称之为相交对象,如下所示:

let raycaster = new THREE.Raycaster();
raycaster.set(new THREE.Vector3(), obstruction1.position);
let intersections = raycaster.intersectObjects(obstructions);

请注意,我沿网格位置的方向投射光线投射器,但仍然返回空。什么可能导致这种行为?

请尝试以下代码行来跟踪更改

for ( var i = 0; i < intersections.length; i++ ) {

            intersections[ i ].object.material.color.set( 0xff0000 );
            console.log(intersections[i].object)

        }
for(变量i=0;i
同时尝试更改以下拼写:
obstruccionGeomobstruccionMaterialobstructionGeomobstructionMaterial

好的,我不知道是什么原因导致了问题,但我通过在渲染场景的componentDidMount()之外获取交点来修复它。我想这是有道理的,对吧?我不想和不存在的东西相交。谢谢大家,我现在觉得自己很笨。

你们在不同的地方拼写障碍语的方式不一样。另外,学习使用chrome调试器和类似的单步代码,同时将鼠标悬停在每个变量和参数上,以确保它包含您期望的内容…只是一个小注释。对于方向,您使用的是障碍物的位置,而它必须是标准化向量。你能解释一下什么是新的三点向量吗?我们有
THREE.Vector2()
THREE.Vector3()
THREE.Vector4()
只有三个。jsI很抱歉,我把construccion翻译成construction,使它更“英语友好”,忘记重命名一些变量,但这不是问题所在。我还检查了对象是否包含所支持的内容。Vector()是一个Vector3,这也不是问题所在。但是谢谢你的邀请replies@prisoner849我规范化了向量,但仍然不起作用,始终返回空,即使我直接将其投射到对象。我还尝试了intersectObject(障碍物1),将光线投射器从原点和方向设置为障碍物1.position.clone().normalize(),但仍然返回空数组。你能提供一个吗?我忘了在这篇文章中更改这些变量,因为我将障碍物转换为障碍物,但这不是问题所在。谢谢你的回复,但是你提到的for loop不起作用,因为crossions.length总是0是的,箭头正好指向我需要相交的对象。这就是箭头的样子,intersection1对象是顶部的矩形。