在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);
但是我不知道该用什么代替“ ...”。如何检测线段应到达的点?以及如何确定它从哪一点开始?玩家能够移动甚至跳跃,因此起点也总是不同的。
您可以使用以下命令(使用r83):
// Draw a line from pointA in the given direction at distance 100
var pointA = new THREE.Vector3( 0, 0, 0 );
var direction = new THREE.Vector3( 10, 0, 0 );
direction.normalize();
var distance = 100; // at what distance to determine pointB
var pointB = new THREE.Vector3();
pointB.addVectors ( pointA, direction.multiplyScalar( distance ) );
var geometry = new THREE.Geometry();
geometry.vertices.push( pointA );
geometry.vertices.push( pointB );
var material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
var line = new THREE.Line( geometry, material );
scene.add( line );
Codepen位于:https://codepen.io/anon/pen/evNqGy
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句