我试图建立一个简单的游戏,从一桶枪中射出东西。到目前为止,我有一个简单的组,一个立方体和一个圆柱作为桶添加。当我旋转组(每次90度)时,枪管朝向不同的方向移动并且一切都很好。
我的问题是,我无法为我的生活找到一种方法来确定我的枪管指向哪个方向。我需要知道如何识别镜筒附着的立方体的面以及它所面对的3D世界的哪个部分...... X +,Y +,Z +,X-,Y-,Z-。请原谅我,如果我的词汇在描述这一点时完全没错。我没有发布任何尝试,因为他们根本没有工作。
请查看此CodePen,了解我尝试做的事情......
...而且这里的代码只是因为我无法将其发布到SO / O上。
var geometry = new THREE.BoxGeometry( 50, 50, 50 );
var material = new THREE.MeshNormalMaterial();
var cube = new THREE.Mesh( geometry, material );
var cylgeo = new THREE.CylinderGeometry( 10, 5, 100, 32 );
var cylmesh = new THREE.Mesh( cylgeo, material );
cylmesh.rotateZ(Math.PI/2);
cylmesh.translateY(35);
var group = new THREE.Group();
group.add( cube );
group.add( cylmesh );
scene.add(group);
答案 0 :(得分:0)
首先,构建你的"枪"因此,默认情况下,桶通过修改代码来指向正z轴:
cylmesh.rotateX( Math.PI / 2 );
在场景中添加辅助轴,以便您可以看到自己在做什么:
scene.add( new THREE.AxisHelper( 100 ) );
在此配置中,当父group
的旋转为零时,枪管指向正z轴。
如果旋转了父group
,则可以获得组(因此桶)的方向:
var vector = new THREE.Vector3(); // create once an reuse
...
group.getWorldDirection( vector );
vector
的返回值将是指向与桶相同方向的单位长度向量。
three.js r.75