I need help with a script that allows my character to stick to walls for a short period of time if they hold a specific button

The code that is in this message is what I would like for you to modify to include what I have requested if you don’t that’s fine also if you could make the player rotate when they are on the wall it would be a big help:

extends CharacterBody2D

const SPEED = 120.0
const JUMP_VELOCITY = -250.0

# Get a reference to the Sprite node when the game starts
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D


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("walk_left", "walk_right")
	if direction:
		velocity.x = direction * SPEED
		
		# Flip the sprite horizontally based on movement direction
		animated_sprite_2d.flip_h = (direction < 0)
	else:
		velocity.x = move_toward(velocity.x, 0, SPEED)

	move_and_slide()