diff --git a/src/Actors/Actor.gd b/src/Actors/Actor.gd index 9a78f5b..57baeea 100644 --- a/src/Actors/Actor.gd +++ b/src/Actors/Actor.gd @@ -14,6 +14,7 @@ var stomp_time := 0.108 var inair_velocity := 21 var wallslide_threshold := 1000 var base_floor_friction := 0.5 +var initial_velocity_dependence := 0.7 var floor_friction := base_floor_friction var max_velocity := { "walk": 120, "run": 160, "jump": Vector2(120, 420), "fall": Vector2(120, 420), "walljump": 200, "idle": 12000, "duck": 160 diff --git a/src/Actors/Blobby/Blobby.gd b/src/Actors/Blobby/Blobby.gd index 10c5ec4..d62ee87 100644 --- a/src/Actors/Blobby/Blobby.gd +++ b/src/Actors/Blobby/Blobby.gd @@ -289,7 +289,9 @@ func calculate_jump_velocity( # TODO This is poop too if -max_velocity["jump"].x < velocity.x and direction.x < 0 || \ max_velocity["jump"].x > velocity.x and direction.x > 0: - var movementFactor = (0.3 + abs(velocity.x)/(max_velocity["fall"].x * 1.43 )) + var absolut = 1 - initial_velocity_dependence + var divisor = 1/max(0.1, initial_velocity_dependence) + var movementFactor = (absolut + abs(velocity.x)/(max_velocity["fall"].x * divisor)) linear_velocity.x = PhysicsFunc.two_step_euler( linear_velocity.x, acceleration_force[state].x * movementFactor * direction.x, mass, @@ -316,7 +318,9 @@ func calculate_fall_velocity( if -max_velocity["fall"].x < velocity.x and direction.x < 0 || \ max_velocity["fall"].x > velocity.x and direction.x > 0: # TODO This is poop - var movementFactor = (0.3 + abs(velocity.x)/(max_velocity["fall"].x * 1.43)) + var absolut = 1 - initial_velocity_dependence + var divisor = 1/max(0.1, initial_velocity_dependence) + var movementFactor = (absolut + abs(velocity.x)/(max_velocity["fall"].x * divisor)) linear_velocity.x = PhysicsFunc.two_step_euler( linear_velocity.x, acceleration_force[state].x * movementFactor * direction.x, mass,