类型错误:对象[object object]没有SubSelf方法,类型错误:对象[object object]没有intersectsPlane方法。

7
在使用优秀的Sim.js和Three.js库进行WebGL项目开发时,我遇到了一个问题:
在某个地方,它使用了THREE.Ray的下一个构造函数:
var ray = new THREE.Ray( this.camera.position, vector.subSelf( this.camera.position ).normalize() );

vector是一个Vector3对象,

这引发了以下错误:

TypeError:Object [object object]没有subSelf方法。

我查看了我使用的Three.js文档,并且在接近这个方法的Vector3对象上找到了一个方法。

.sub( v ) Vector3

我试图更改这个东西,结果在这个调用上出现了一个新的错误:
var intersects = ray.intersectScene( this.scene );

再次出现错误,因为当我查看时,ray没有intersectsPlane方法。

1个回答

14

实际上,我第一次弄错了,原始代码是ray.IntersectScene,但它不存在,我用Ray.js中唯一存在的intersectPlane替换了它,这导致了一个新的“无法调用未定义方法点”的错误。 - maxandonuts
根据three.js迁移维基,intersectScene已不再存在,它建议使用intersectObjects(array)代替。任何人知道谁拥有这个方法吗? - maxandonuts
1
@MaxRodriguezCollada,你不需要一个Ray,因为它们不再处理复杂的碰撞。Ray现在是一个纯数学结构,但是发射光线现在由一个叫做Raycaster的新类来完成。https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js - Alex Wayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接