【发布时间】:2016-11-07 09:40:42
【问题描述】:
在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,所以没有测试过,但它会是类似的东西。
标签: three.js