extends "res://scripts/player.gd" const wallride_speed = 0.5 const wallride_speed_necessary = 15 func control_player(delta): wallride(delta) .control_player(delta) func wallride(delta): # If our feet aren't touching, but we are colliding, we are wall-riding if is_on_wall() and velocity.length() > wallride_speed_necessary: var aim = get_node("Yaw").get_global_transform().basis var direction = Vector3() if Input.is_action_pressed("move_forwards"): direction -= aim[2] if Input.is_action_pressed("move_backwards"): direction += aim[2] velocity += direction * wallride_speed velocity.y = -gravity # So it's undone in super else: pass # We need to return to falling (we aren't riding anymore)