I'm trying to create a top down controller, but move_and_slide() no longer accepts arguments so it doesn't work like I expected. Code below:

extends CharacterBody3D

var speed: float = 5.0
var motion: Vector3 = Vector3.ZERO
var input_vector: Vector2 = Vector2.ZERO

func _physics_process(delta: float) -> void:
	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()

	motion = Vector3(input_vector.x, 0, input_vector.y) * speed
	move_and_slide(motion)

res://character_controller.gd:13 - Parse Error: Too many arguments for "move_and_slide()" call. Expected at most 0 but received 1.

In Godot 4, you need to set the value of velocity before calling move_and_slide().
https://docs.godotengine.org/en/4.0/classes/class_characterbody3d.html#class-characterbody3d-method-move-and-slide

velocity = ...
move_and_slide()

    DaveTheCoder
    Thanks, here's the corrected code:

    extends CharacterBody3D
    
    var speed: float = 5.0
    var input_vector: Vector2 = Vector2.ZERO
    
    func _physics_process(delta: float) -> void:
    	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 = Vector3(input_vector.x, 0, input_vector.y) * speed
    	move_and_slide()