extends CharacterBody3D @export var speed := 5.0 @export var input: PlayerInput # Get the gravity from the project settings to be synced with RigidBody nodes. var gravity = ProjectSettings.get_setting(&"physics/3d/default_gravity") func _ready(): position = Vector3(0, 4, 0) if input == null: input = $Input func _rollback_tick(delta, _tick, _is_fresh): # Add the gravity. if not is_on_floor(): velocity.y -= gravity * delta var input_dir = input.movement var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.z)).normalized() velocity.x = direction.x * speed velocity.z = direction.z * speed # move_and_slide assumes physics delta # multiplying velocity by NetworkTime.physics_factor compensates for it velocity *= NetworkTime.physics_factor move_and_slide() velocity /= NetworkTime.physics_factor