kota's memex

basic collisions

The body will slide off the other body. Doesn't need multiplied by delta.
move_and_slide

The body will stop if it collides.
move_and_collide

without acceleration

extends KinematicBody2D

const SPEED = 100
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")
  input_vector = input_vector.normalized()

  velocity = input_vector * SPEED

  move_and_collide(velocity * delta)

with acceleration + sliding collision

extends KinematicBody2D

const ACCELERATION = 500
const MAX_SPEED = 100
const FRICTION = 500
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")
  input_vector = input_vector.normalized()

  if input_vector != Vector2.ZERO:
    velocity = velocity.move_toward(input_vector * MAX_SPEED, ACCELERATION * delta)
  else:
    velocity = velocity.move_toward(Vector2.ZERO, FRICTION * delta)

  velocity = move_and_slide(velocity)