Javascript 对象拖动时的Three.js(mousemove+;mousedown)与墙的碰撞应阻止对象进一步拖动
我正在开发一个应用程序,用户可以在房间内拖放对象,努力找到当对象撞到墙上时对象拖动应该停止的方式(光线相交)添加到mousemove事件的代码如下所示,在与对象发生碰撞时,成功记录“撞到墙”,但对象继续拖动,非常感谢你在这方面的帮助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
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]。距离