Jump not working

Godot Version

4.3.stable

Question

` When I press the jump input (space button) my character just won’t jump. here is the code in GDscript:
extends CharacterBody2D

const SPEED = 700.0
const JUMP_VELOCITY = 4000.0

func _physics_process(delta: float) → void:
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta

# Handle jump.
if Input.is_action_just_pressed("jump") and is_on_floor():
	velocity.y = JUMP_VELOCITY

# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction := Input.get_axis("ui_left", "ui_right")
if direction:
	velocity.x = direction * SPEED
else:
	velocity.x = move_toward(velocity.x, 0, SPEED)

move_and_slide()`
1 Like

Please post your code as preformatted text. Whitespace has meaning in GDScript; as presented this is not valid code.

If your code looks something like this:

func _physics_process(delta: float) → void:
	# Add the gravity.
	if not is_on_floor():
		velocity += get_gravity() * delta

			# Handle jump.
			if Input.is_action_just_pressed("jump") and is_on_floor():
				velocity.y = JUMP_VELOCITY

The reason your code does not work is because you test the second if-statement inside the first if-statement’s scope.

If not, are you sure “jump” is actually defined as an input?

From my knowledge, up in Godot is negitve in 2d so setting your JUMP_VELOCITY to a positve value would be bringing it to the ground rather than having it ‘jump’. Also as TokyoFunkScene has said, you could also not have defined jump as an input. Make sure to check that.

1 Like