# (3D) How can I make the player run faster if the player jumps again in 0.5 seconds after jumping?

Attention Topic was automatically imported from the old Question2Answer platform.

As the title says, what I’m trying to achieve is put a timer for the player. If the player jumps in less than half a second after the first jump I want to boost the player’s speed by 5 if not reset the speed to 70. You may realize most of the code is actually from FPS tutorial in Godot tutorials. I just started to learn Godot and immediately tried to implement my own things. And as you can see I got stuck on this.

``````extends KinematicBody

const GRAVITY = -200.8
var vel = Vector3()
var maxSpeed = 70
var jumpSpeed = 80
const ACCEL = 70.0

var dir = Vector3()

const DEACCEL= 40
const MAX_SLOPE_ANGLE = 40

var camera
var rotation_helper

var MOUSE_SENSITIVITY = 1.0

var jumpTimer

camera = \$Rotation_Helper/Camera
rotation_helper = \$Rotation_Helper

jumpTimer = \$JumpTimer

Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)

func _physics_process(delta):
process_input(delta)
process_movement(delta)

func process_input(delta):

# ----------------------------------
# Walking
dir = Vector3()
var cam_xform = camera.get_global_transform()

var input_movement_vector = Vector2()

if Input.is_action_pressed("movement_forward"):
input_movement_vector.y += 1
if Input.is_action_pressed("movement_backward"):
input_movement_vector.y -= 1
if Input.is_action_pressed("movement_left"):
input_movement_vector.x -= 1
if Input.is_action_pressed("movement_right"):
input_movement_vector.x += 1

input_movement_vector = input_movement_vector.normalized()

# Basis vectors are already normalized.
dir += -cam_xform.basis.z * input_movement_vector.y
dir += cam_xform.basis.x * input_movement_vector.x
# ----------------------------------
``````

This is the important part:

``````	# ----------------------------------
# Jumping
if is_on_floor():
if Input.is_action_just_pressed("movement_jump"):
vel.y = jumpSpeed
print_debug(jumpTimer.time_left)
if jumpTimer.time_left > 0.0:
if maxSpeed < 100:
maxSpeed += 5

jumpTimer.stop()

else:
maxSpeed = 70
jumpTimer.start(0.5)
# ----------------------------------
``````
• ``````  # ----------------------------------
# Capturing/Freeing the cursor
if Input.is_action_just_pressed("ui_cancel"):
if Input.get_mouse_mode() == Input.MOUSE_MODE_VISIBLE:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
else:
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
# ----------------------------------
``````

func process_movement(delta):
dir.y = 0
dir = dir.normalized()

``````  vel.y += delta * GRAVITY

var hvel = vel
hvel.y = 0

var target = dir
target *= maxSpeed

var accel
if dir.dot(hvel) > 0:
accel = ACCEL
else:
accel = DEACCEL

hvel = hvel.linear_interpolate(target, accel * delta)
vel.x = hvel.x
vel.z = hvel.z
vel = move_and_slide(vel, Vector3(0, 1, 0), 0.05, 4, deg2rad(MAX_SLOPE_ANGLE))
``````

func _input(event):
if event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
``````  	var camera_rot = rotation_helper.rotation_degrees