A worked example, rendered from real sample data. Sign in to run the tool on your own input.
jump_height=3.5
jump_duration=0.45
gravity_mult=2.5
run_speed=10
min_jump_height=1.2
coyote_time=0.1
jump_buffer=0.12
tile_size=1Designer intent
Jump height 3.5 units (3.50 tiles at tile_size 1)
Time to apex 0.45s
Run speed 10 units/s
Derived physics
Rise gravity 34.57 units/s^2
Fall gravity 86.42 units/s^2 (2.5x)
Jump velocity 15.56 units/s
Jump cut velocity 9.11 units/s (release early -> 1.2 units)
Terminal velocity 31.11 units/s
Fall time 0.285s
Total air time 0.735s
Acceleration 66.67 units/s^2 (0 -> run in 0.15s)
Deceleration 100 units/s^2 (run -> 0 in 0.1s)
Level sizing at full run speed
Apex reached after 4.5 units (4.50 tiles)
Jump arc spans 7.35 units (7.35 tiles)
Safe platform gap 5.88 units — leave ~20% margin for input timing
Forgiveness windows
Coyote time 0.1s (6 frames at 60fps)
Jump buffer 0.12s (7 frames at 60fps)
Air control 80% of ground acceleration
Unity (C#, world units)
public static class PlayerPhysics
{
public const float JumpHeight = 3.5f;
public const float TimeToApex = 0.45f;
public const float Gravity = 34.57f;
public const float FallGravity = 86.42f;
public const float JumpVelocity = 15.56f;
public const float JumpCutVelocity = 9.11f;
public const float TerminalVelocity = 31.11f;
public const float RunSpeed = 10f;
public const float Acceleration = 66.67f;
public const float Deceleration = 100f;
public const float AirControl = 0.8f;
public const float CoyoteTime = 0.1f;
public const float JumpBuffer = 0.12f;
}
Physics2D.gravity = new Vector2(0f, -34.57f);
rigidbody2D.gravityScale = 1f; set
…
Calculate jump height, gravity, velocity for platformer feel. Part of the DevTools Surf developer suite. Browse more tools in the Game Dev collection.