【发布时间】:2015-10-05 12:45:12
【问题描述】:
我是three.js 的新手,我使用http://threejs.org/examples/webgl_interactive_draggablecubes.html 的示例来拖放我的对象。问题是我希望它们只在 XZ 平面上移动(而不是在 Y 轴上),我不知道如何实现它以便在平面上移动它们。用户应该只能在地面上“滑动”它们。我使用的是 OrbitControls 而不是 TrackballControls。
https://jsfiddle.net/d58bbLey/
function onDocumentMouseMove( event ) {
event.preventDefault();
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
raycaster.setFromCamera( mouse, camera );
if ( SELECTED ) {
var intersects = raycaster.intersectObject( plane );
if ( intersects.length > 0 ) {
SELECTED.position.copy( intersects[ 0 ].point.sub( offset ) );
}
return;
}
var intersects = raycaster.intersectObjects( objects );
if ( intersects.length > 0 ) {
if ( INTERSECTED != intersects[ 0 ].object ) {
if ( INTERSECTED ) INTERSECTED.material.color.setHex( INTERSECTED.currentHex );
INTERSECTED = intersects[ 0 ].object;
INTERSECTED.currentHex = INTERSECTED.material.color.getHex();
plane.position.copy( INTERSECTED.position );
plane.lookAt( camera.position );
}
container.style.cursor = 'pointer';
} else {
if ( INTERSECTED ) INTERSECTED.material.color.setHex( INTERSECTED.currentHex );
INTERSECTED = null;
container.style.cursor = 'auto';
}
}
感谢您的帮助! :D
【问题讨论】: