so I was following this tutorial
and found out that player's is so slippery (has a really low friction with the ground) the player even refused to stop moving when it supposed to be standing still 
here's the player's code,
extends KinematicBody
export var speed := 0.1
export var jump_strength := 20.0
export var gravity := 50.0
var velocity := Vector3.ZERO
var snap_vector := Vector3.DOWN
onready var spring_arm: SpringArm = $SpringArm
onready var model: MeshInstance = $MeshInstance
func _physics_process(delta: float) -> void:
var move_direction = Vector3.ZERO
#move_direction.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
#move_direction.z = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
if Input.is_action_pressed("ui_right"):
move_direction.x += 1
if Input.is_action_pressed("ui_left"):
move_direction.x -= 1
if Input.is_action_pressed("ui_down"):
move_direction.z += 1
if Input.is_action_pressed("ui_up"):
move_direction.z -= 1
move_direction = move_direction.rotated(Vector3.UP, spring_arm.rotation.y).normalized()
if move_direction != Vector3.ZERO:
move_direction = move_direction.normalized()
velocity.x += move_direction.x * speed
velocity.z += move_direction.z * speed
velocity.y -= gravity * delta
var just_landed := is_on_floor() and snap_vector == Vector3.ZERO
var is_jumping := is_on_floor() and Input.is_action_just_pressed("jump")
if is_jumping:
velocity.y = jump_strength
snap_vector = Vector3.ZERO
elif just_landed:
snap_vector = Vector3.DOWN
velocity = move_and_slide_with_snap(velocity, snap_vector, Vector3.UP, true)
if velocity.length() > 0.2:
var look_direction = Vector2(velocity.z, velocity.x)
model.rotation.y = look_direction.angle()
func _process(delta:float) -> void:
spring_arm.translation = translation