Scale & AddForce of KinematicBody for 3D

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

Hello Everyone
I currently have a player that is using the Kinematic Body for 3D. I’m currently working on a slide system and I want to add force in the direction of they key pressed. I also want to change the scale of the entire player(player is a capsule) to half the size and back to full size once crouch button is released. I have the basics down, I want to know I can use
state.AddForce(forcevector, Vector3(0,0,0)
to add force to the KinematicBody

extends KinematicBody

# Global Variables
export var MouseSensitivity = 0.05

export var MovementSpeed = 7
export var Acceleration = 20
export var GravityForce = 9.8

export var CounterMovement = 0.175
export var MaxSlopeAngle = 35

export var JumpForce = 5.5
export var SlideForce = 4
export var SlideCounterMovement = 0.2
export var CanSlideValue = 5



# Local Variables
var Threshold = 0.01
var Direction = Vector3()
var Velocity = Vector3()
var Fall = Vector3()
var CrouchScale = Vector3(1, 0.5, 1)
var PlayerScale = Vector3()

onready var head = $Head

# Functions
func _ready():
	Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
	PlayerScale = get_scale()

func _input(event):
	if event is InputEventMouseMotion:
		rotate_y(deg2rad(-event.relative.x * MouseSensitivity))
		head.rotate_x(deg2rad(-event.relative.y * MouseSensitivity))
		head.rotation.x = clamp(head.rotation.x, deg2rad(-90), deg2rad(90))

func _process(delta):

	# Mouse Visblity
	if Input.is_action_just_pressed("ui_cancel"):
		Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
	
	# Movement Input
	Direction = Vector3()
	if Input.is_action_pressed("MoveForward"):
		Direction -= transform.basis.z
	elif Input.is_action_pressed("MoveBackward"):
		Direction += transform.basis.z
	if Input.is_action_pressed("MoveRight"):
		Direction += transform.basis.x
	elif Input.is_action_pressed("MoveLeft"):
		Direction -= transform.basis.x
	# Calculate Velocity & Direction
	Direction = Direction.normalized()
	Velocity = Velocity.linear_interpolate(Direction * MovementSpeed, Acceleration * delta)
	Velocity = move_and_slide(Velocity, Vector3.UP)
	move_and_slide(Fall, Vector3.UP)
	
	# Jump Input
	if not is_on_floor():
		Fall.y -= GravityForce * delta
	if Input.is_action_just_pressed("Jump"):
		Fall.y = JumpForce
	# Crocuh Input
	if Input.is_action_pressed("Crouch"):
		startcrouch()
	elif Input.is_action_just_released("Crouch"):
		stopcrounch()

func startcrouch():
	PlayerScale = set_scale()
	if Velocity >= CanSlideValue:
		state.addforce(SlideForce, Vector3())
func stopcrouch():