Learn Double Jump in Unity

Physics Based Character Controller part 4

Tristan Engel
1 min readJan 1, 2022

In this article we will add the ability to double jump on our character controller.

Double Jump Script

A new variable to keep track if we already double jumped or not.

private bool _doubleJumped;

When we are on the ground we reset the check if we already double jumped or not.
When we are not grounded we check if the space key is pressed and if we haven’t double jumped yet.
Then we add our jump height to our cached y velocity and set doubleJumped variable to true.

void Update()
{
Vector3 direction = new Vector3(Input.GetAxis(“Horizontal”), 0);
Vector3 velocity = direction * _speed;
if (_controller.isGrounded == true)
{
_doubleJumped = false;
if (Input.GetKeyDown(KeyCode.Space))
{
_yVelocity = _jumpHeight;
}
}
else
{
//check for double jump
if (Input.GetKeyDown(KeyCode.Space) && _doubleJumped == false)
{
_yVelocity += _jumpHeight;
_doubleJumped = true;
}

_yVelocity -= _gravity;
}
velocity.y = _yVelocity;
_controller.Move(velocity * Time.deltaTime);
}

--

--

Tristan Engel

Aspiring developer that’s self-learning Unity & C# to transition to a career with Unity. I got a passion for creating interactive experiences.