2d platformer controller godot code example
Example 1: godot platformer movement
extends KinematicBody2D # The player is a kinematic body, hence extends Kine..
# Adjustable variables of the player
# export is used to allow to edit the values outside the script
export var speed = 500 # The speed of the character
export var gravity = 32 # The gravity of the character
export var jumpforce = 800 # The jump force of the character
var motion = Vector2.ZERO
func _physics_process(delta):
# Player movement functions:
if Input.is_action_pressed("ui_right"): # If the player enters the right arrow
motion.x = speed # then the x coordinates of the vector be positive
elif Input.is_action_pressed("ui_left"): # If the player enters the left arrow
motion.x = -speed # then the x coordinates of the vector be negative
else: # If none of these are pressed
motion.x = lerp(motion.x, 0, 0.25) # set the x to 0 by smoothly transitioning by 0.25
if is_on_floor(): # If the ground checker is colliding with the ground
if Input.is_action_pressed("ui_up"): # And the player hits the up arrow key
JumpSound.play() # Play the jump sound
motion.y = -jumpforce # then jump by jumpforce
motion.y += gravity + delta # Always make the player fall down
motion = move_and_slide(motion, Vector2.UP)
# Move and slide is a function which allows the kinematic body to detect
# collisions and move accordingly
Example 2: gdscript player controller 2d
extends KinematicBody2D
var velocity = Vector2.ZERO
func _physics_process(delta):
var input_vector = Vector2.ZERO
input_vector.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
input_vector.y = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
if input_vector != Vector2.ZERO:
velocity = input_vector
else:
velocity = Vector2.ZERO
move_and_collide(velocity)