How to implement acceleration and deceleration to also work on slopes.

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Gamepro5

Basically I just have no idea how to implement acceleration and deceleration, and furthermore, when the player accels and decels it should treat the slope so you would glide with acceleration up the slope the same distance as you would down the slope. This would work well with my current system of moving up and down slopes at the same speed.

Thanks in advance for the help!

This is my current system, but it seems very bad.

if Input.is_action_pressed("move_forward"):
	velocity.x -= sin(rotation.y) * acceleration
	velocity.z -= cos(rotation.y) * acceleration
if Input.is_action_pressed("move_left"):
	velocity.x -= cos(rotation.y) * acceleration
	velocity.z += sin(rotation.y) * acceleration
if Input.is_action_pressed("move_backward"):
	velocity.x += sin(rotation.y) * acceleration
	velocity.z += cos(rotation.y) * acceleration
if Input.is_action_pressed("move_right"):
	velocity.x += cos(rotation.y) * acceleration
	velocity.z -= sin(rotation.y) * acceleration

if velocity.x != 0 || velocity.z != 0:
	if is_on_floor(): #friction!
		velocity.z *= 0.9;
		velocity.x *= 0.9;
		
	if abs(velocity.x) <= 0.0001:
		velocity.x = 0;
	if abs(velocity.z) <= 0.0001:
		velocity.z = 0;