我知道我们可以通过scene.__removeObject()
移除任何对象
所以我使用raycaster删除屏幕中的任何对象。当我点击某个对象时intersects.length
变为> 0并且scene.__removeObject(SELECTED)
被执行。但是,如果点击Arrowhelper
对象(比如ARROW
)intersects.length
仍然为零。
所以我如何从GUI中删除Arrow助手。在代码中我知道scene.__removeObject(ARROW)
有效
function onDocumentMouseDown( event ) {
event.preventDefault();
var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );
projector.unprojectVector( vector, camera );
var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
var intersects = raycaster.intersectObjects( objects );
if ( intersects.length > 0 ) {
controls.enabled = false;
SELECTED = intersects[ 0 ].object;
scene.__removeObject(SELECTED)
// scene.__removeObject(ARROW)
}
}
答案 0 :(得分:0)
你的问题实际上是关于交叉点,对吗?
ArrowHelper由两个网格.cone和.line组成,所以它应该像其他对象一样可以交叉。
请记住,Raycaster只会与objects
变量中的对象相交。
我为您的问题找到两种解决方案:
objects
变量包含帮助者的.cone
或.line
或两者。在objects
(objects.push(ARROW)
)中添加整个帮助者,但您必须致电intersectObjects
recursively
raycaster.intersectObjects(objects,true);