Javascript three.js使用Camera和physi.js移动和旋转网格
我尝试用Physi.js在Three.js中移动一个对象。 摄影机连接到正在移动的网格。 我使用.setLinearVelocity()移动它 我用.setAngularVelocity()旋转它; 问题是我可以看旋转方向,但是 当我向前移动时,它不会移动到我所看到的目的地。 谢谢你的帮助 这是我的步行代码: //移动箱Javascript three.js使用Camera和physi.js移动和旋转网格,javascript,three.js,physics,Javascript,Three.js,Physics,我尝试用Physi.js在Three.js中移动一个对象。 摄影机连接到正在移动的网格。 我使用.setLinearVelocity()移动它 我用.setAngularVelocity()旋转它; 问题是我可以看旋转方向,但是 当我向前移动时,它不会移动到我所看到的目的地。 谢谢你的帮助 这是我的步行代码: //移动箱 var geoMover = new THREE.BoxGeometry(20,20); var matMover = new Physijs.createMaterial(n
var geoMover = new THREE.BoxGeometry(20,20);
var matMover = new Physijs.createMaterial(new THREE.MeshPhongMaterial({color: 0xff00E3, specular: 0xffffff, shininess: 60}),.0,.2);
var mover = new Physijs.CapsuleMesh(geoMover, matMover,1);
mover.position.x =0;
mover.position.y = 30;
mover.position.z = 0;
mover.setAngularFactor(THREE.Vector3(0,0,0));
scene.add(mover);
mover.add(camera);
//渲染
function render(){
renderer.clear();
camera.lookAt(scene.position);
walk();
renderer.render(scene, camera);
requestAnimationFrame(render);
}
render();
//走
function walk(){
//EVENTS lauschen
var delta = clock.getDelta();
var physisMove = 10;
if(keyboard.pressed('left')){
mover.setAngularVelocity({z:0,y:1,x:0});
istMoveLeft = true;
}
if(keyboard.pressed('up')){
mover.setLinearVelocity({z: -physisMove, y:0,x:0});
isMoveForward = true;
}
if(keyboard.pressed('right')){
mover.setAngularVelocity({z:0,y:-1,x:0});
isMoveRight = true;
}
if(keyboard.pressed('down')){
mover.setLinearVelocity({z: physisMove, y:0,x:0});
isMoveBackward = true;
}
document.addEventListener("keyup", function(event){
var code = event.keyCode;
if(code == 38) mover.setLinearVelocity({z:0, y:0,x:0});
if(code == 40) mover.setLinearVelocity({z:0, y:0,x:0});
if(code == 37){
mover.setLinearVelocity({z:0, y:0,x:0});
mover.setAngularVelocity({z:0,y:0,x:0});
}
if(code == 39){
mover.setLinearVelocity({z:0, y:0,x:0});
mover.setAngularVelocity({z:0,y:0,x:0});
}
});
mover.setAngularFactor({z:0,x:0,y:0});
/*
document.addEventListener('keyup', function(event){
var code = event.keyCode;
if(code == 37) istMoveLeft = false;
if(code == 38) isMoveForward = false;
if(code == 39) isMoveRight = false;
if(code == 40) isMoveBackward = false;
});
*/
}
我希望这将有助于:
我建议你试试,因为它似乎已经具备了你所需要的一切(Physi.js+Three.js)