Javascript three.js使用Camera和physi.js移动和旋转网格

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

我尝试用Physi.js在Three.js中移动一个对象。 摄影机连接到正在移动的网格。 我使用.setLinearVelocity()移动它

我用.setAngularVelocity()旋转它; 问题是我可以看旋转方向,但是 当我向前移动时,它不会移动到我所看到的目的地。 谢谢你的帮助

这是我的步行代码:

//移动箱

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)