因此,我对three.js很熟悉,但对physi.js还是陌生的,我目前正在Phys.js中制作第一人称控件。我试图通过将player .__ dirtyPosition设置为true来移动播放器网格。然后,我尝试使用setLinearVelocity使角色跳转。他们俩都可以单独工作,但不能一起工作。
我尝试使用setImpulse,在onKeyUp函数中设置正向和反向变量,并尝试在dirtyPosition = true和false之间切换。
这是我的基本代码:
requestAnimationFrame( move );
if ( fw === true ) { player.__dirtyPosition = true;
player.position.z = raycaster.ray.at( 0.5, place ).z
player.position.x = raycaster.ray.at( 0.5, place ).x };
if ( bw === true ) { player.__dirtyPosition = true;
player.position.z += raycaster.ray.at( -0.5, place ).z
player.position.x += raycaster.ray.at( -0.5, place ).x };
if ( jp === true ) { player.setLinearVelocity(new THREE.Vector3(0, 10, 0)); };
我希望走路和跳跃,因为y变量仅在跳跃时受到影响(并且physijs github一起显示了它们),但是我只是走路,然后当我放开w键时,我的LinearVelocity终于踢进去了,我摔倒了我走得很快。