在three.js中,我使用PointerLock控件制作基本的第一人称射击游戏。
我使用了以下代码:
function onDocumentMouseDown( event ) {
var raycaster = new THREE.Raycaster();
mouse3D.normalize();
controls.getDirection( mouse3D );
raycaster.set( controls.getObject().position, mouse3D );
var intersects = raycaster.intersectObjects( objects );
...
}
为了检测与物体的碰撞,这意味着你“射击”了该物体。
现在,我想要可视化子弹所经过的路径。我想过从用户所看到的位置开始画一条线,朝着射线投射器的方向,但我不知道如何做...有人能帮助我吗?我是three.js的新手,从来没有想过画一条线会这么难。
更新: 我正在尝试使用:
var geometry = new THREE.Geometry();
geometry.vertices.push(...);
geometry.vertices.push(...);
var line = new THREE.Line(geometry, material);
scene.add(line);
但我不知道在“…”的位置应该填写什么。我如何检测线条应该连接哪个点?以及如何确定起始点是哪个点?玩家可以移动甚至跳跃,因此起始点也总是不同的。
push()
方法发送起点和终点(向量)。第一个可能是你的相机位置geometry.vertices.push(camera.position)
。第二个是从 intersectObjects 函数返回的第一个交点的第一个点。geometry.vertices.push(intersects[0].point)
。我没有使用过 Raycaster,所以没有测试过,但它应该是这样的。 - 2pha