Javascript 对象拖动时的Three.js(mousemove+;mousedown)与墙的碰撞应阻止对象进一步拖动

Javascript 对象拖动时的Three.js(mousemove+;mousedown)与墙的碰撞应阻止对象进一步拖动,javascript,jquery,three.js,Javascript,Jquery,Three.js,我正在开发一个应用程序,用户可以在房间内拖放对象,努力找到当对象撞到墙上时对象拖动应该停止的方式(光线相交)添加到mousemove事件的代码如下所示,在与对象发生碰撞时,成功记录“撞到墙”,但对象继续拖动,非常感谢你在这方面的帮助 var proximityBox = renderer.itemSelected.parent.getObjectByName('proximityBox'); var originPoint = new THREE.Vector3(); o

我正在开发一个应用程序,用户可以在房间内拖放对象,努力找到当对象撞到墙上时对象拖动应该停止的方式(光线相交)添加到mousemove事件的代码如下所示,在与对象发生碰撞时,成功记录“撞到墙”,但对象继续拖动,非常感谢你在这方面的帮助

    var proximityBox = renderer.itemSelected.parent.getObjectByName('proximityBox');
    var originPoint = new THREE.Vector3();
    originPoint.setFromMatrixPosition( proximityBox.matrixWorld );
    NelsonPlanner.renderer.scene.updateMatrixWorld();
            for (var vertexIndex = 0; vertexIndex < proximityBox.geometry.vertices.length; vertexIndex++){      
                    var localVertex = proximityBox.geometry.vertices[vertexIndex].clone();
                    var globalVertex = localVertex.applyMatrix4( proximityBox.matrixWorld );
                    var vector = new THREE.Vector3();
                    vector.setFromMatrixPosition( proximityBox.matrixWorld );
                    var directionVector = globalVertex.sub( vector );
                    var ray = new THREE.Raycaster( originPoint, directionVector.clone().normalize() );
                    var wallsToCheck = [];
                    for( i in NelsonPlanner.renderer.scene.getObjectByName('walls').children ){
                        wallsToCheck.push(NelsonPlanner.renderer.scene.getObjectByName('walls').children[i].getObjectByName('3D').getObjectByName('wallCube'));
                    }   
                    var collisionResults = ray.intersectObjects( wallsToCheck );
            }
            if ( collisionResults.length > 0 && collisionResults[0].distance < directionVector.length() ){
                console.log("wall hit");
            }
            else {

            }

}
var proximityBox=renderer.itemSelected.parent.getObjectByName('proximityBox');
var originPoint=new THREE.Vector3();
originPoint.setFromMatrixPosition(proximityBox.matrixWorld);
NelsonPlanner.renderer.scene.UpdateMatrix()文件;
对于(var vertexIndex=0;vertexIndex0&&collisionResults[0]。距离