Let’s say we are creating simple physics character controller that moves using WASD keys.
First problem that I faced it’s a movement. How to properly move physics CC?
- Using applyForce/applyImpulse - I don’t like it because of bad feedback from such controller. Character slowly increasing its speed but then it flies as fast as crazy. Don’t undestand how to solve it. Clamping? Ok, but how?
- setLinearVelocity. It’s more usual technique for me. But look I can’t use frame dt-time here. If I set setLinearVelocity just for 1 frame:
playerImpostor.setAngularVelocity( new Vector3( 5, 0, 0 ) );
it gives me following x values in the render():
playerPosX: 0 playerPosX: 0.1411302409033075 playerPosX: 0.2614556048584587 playerPosX: 0.35569196846402606 playerPosX: 0.42343760794770186 playerPosX: 0.46704296055634603 playerPosX: 0.485196052615534
so it looks physics engine do some lerp-work by its own. So how can we control lerping here? IDK.
Guys, can you please give some advices how do you make physics controllers?
Created my first try “CC using impulses of CannonJS”: Playground
I have no idea how to implement smooth increasing and decreasing of speed so now it immedialety goes fast.