diff options
Diffstat (limited to 'source/main.cpp')
| -rwxr-xr-x | source/main.cpp | 17 | 
1 files changed, 4 insertions, 13 deletions
| diff --git a/source/main.cpp b/source/main.cpp index bebdd57..a8c5070 100755 --- a/source/main.cpp +++ b/source/main.cpp @@ -1263,18 +1263,6 @@ int main(int argc, char* argv[])      if (is_gravity)      {  	// @section: game_movement -	// -	// @todo: fix this, this sucks -	// here is what sucks -	// - when I jump on a platform, I keep skeedaddling on and fall off, WHY? -	// - When I jump off of a platform, even sliding with low force, there  -	// is a high force applied needlessly -	// - I do not like the extra motion we get when in the air, that sucks -	// when I hit a wall and press the arrow key I keep applying motion, that sucks -	// as it also means that I am accelerating, WHILST BEING STATIONARY!! I need to fix that. -	// A problem I face because of that is that when I press the right key, the game thinks that I -	// was in motion, so even when I am applying the right arrow key to move, it will take time until the -	// "sliding" movement slows down, and it usually takes 5 seconds to do that.        // calculate force acting on player        if (collidey) { @@ -1310,6 +1298,9 @@ int main(int argc, char* argv[])          if (!collidex) {             net_force = effective_force;  	  if (controller.jump) { +	      // @step: if in the air and jumping in a different direction +	      // allow more immediate feeling force, instead of the jump adding into net_force +	      // which gives off, more of a floaty feeling.  	      r32 threshed_force = roundf(net_force);  	      b8 move_dir_different = (threshed_force >= 0 && p_move_dir.x < 0) || (threshed_force <= 0 && p_move_dir.x > 0);  	      if (move_dir_different) { @@ -1320,7 +1311,7 @@ int main(int argc, char* argv[])  	      if (is_key_down_x) {  		  // player is slowing down, in that case, we allow this movement.  		  b8 move_dir_opposite = (net_force > 0 && p_move_dir.x < 0) || (net_force < 0 && p_move_dir.x > 0); -		  if (move_dir_opposite) +		  if (move_dir_opposite || ABS(net_force) < fall_accelx*0.15f)  		  {  		      active_force = p_move_dir.x*fall_accelx*timer.tDelta;  		      net_force = clampf(net_force + active_force, -fall_accelx, fall_accelx); | 
