пожалуйста помогите с кодом в годот
extends CharacterBody3D @export var speed: float = 5.0 @export var jump_force: float = 4.5 @export var gravity: float = 9.8 @export var mouse_sensitivity: float = 0.002 var camera: Camera3D var velocity1: Vector3 = Vector3.ZERO # Используем встроенную velocity # Флаг для отслеживания состояния захвата мыши var is_mouse_captured: bool = false func _ready(): camera = $Camera3D if camera == null: # Проверка наличия камеры push_error("Camera3D node not found! Add a Camera3D as child of this node.") return # При запуске мышь откреплена, курсор виден Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) is_mouse_captured = false func _input(event): # Обработка нажатия Escape для переключения захвата мыши if Input.is_action_just_pressed("escape"): # ui_cancel обычно привязан к Escape toggle_mouse_capture() if event is InputEventMouseMotion and is_mouse_captured: var mouse_motion = event as InputEventMouseMotion rotate_y(-mouse_motion.relative.x * mouse_sensitivity) camera.rotate_x(-mouse_motion.relative.y * mouse_sensitivity) # Ограничение наклона вверх/вниз var cam_rot = camera.rotation cam_rot.x = clamp(cam_rot.x, -PI/2, PI/2) camera.rotation = cam_rot func toggle_mouse_capture(): if is_mouse_captured: # Освобождаем мышь (режим по умолчанию) Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) is_mouse_captured = false else: # Захватываем мышь для управления камерой Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) is_mouse_captured = true func _physics_process(delta): # Применяем гравитацию if not is_on_floor(): velocity.y -= gravity * delta # Получаем направление движения от ввода var input_dir = Input.get_vector("left", "right", "up", "down") var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() # Обновляем горизонтальную скорость if direction: velocity.x = direction.x * speed velocity.z = direction.z * speed else: # Плавно останавливаемся, если нет ввода velocity.x = move_toward(velocity.x, 0, speed * 10 * delta) velocity.z = move_toward(velocity.z, 0, speed * 10 * delta) # Прыжок if Input.is_action_just_pressed("jump") and is_on_floor(): velocity.y = jump_force # Движение с учётом скольжения move_and_slide() # В Godot 4 move_and_slide не принимает
extends CharacterBody3D @export var speed: float = 5.0 @export var jump_force: float = 4.5 @export var gravity: float = 9.8 @export var mouse_sensitivity: float = 0.002 var camera: Camera3D var velocity1: Vector3 = Vector3.ZERO # Используем встроенную velocity # Флаг для отслеживания состояния захвата мыши var is_mouse_captured: bool = false func _ready(): camera = $Camera3D if camera == null: # Проверка наличия камеры push_error("Camera3D node not found! Add a Camera3D as child of this node.") return # При запуске мышь откреплена, курсор виден Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) is_mouse_captured = false func _input(event): # Обработка нажатия Escape для переключения захвата мыши if Input.is_action_just_pressed("escape"): # ui_cancel обычно привязан к Escape toggle_mouse_capture() if event is InputEventMouseMotion and is_mouse_captured: var mouse_motion = event as InputEventMouseMotion rotate_y(-mouse_motion.relative.x * mouse_sensitivity) camera.rotate_x(-mouse_motion.relative.y * mouse_sensitivity) # Ограничение наклона вверх/вниз var cam_rot = camera.rotation cam_rot.x = clamp(cam_rot.x, -PI/2, PI/2) camera.rotation = cam_rot func toggle_mouse_capture(): if is_mouse_captured: # Освобождаем мышь (режим по умолчанию) Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) is_mouse_captured = false else: # Захватываем мышь для управления камерой Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) is_mouse_captured = true func _physics_process(delta): # Применяем гравитацию if not is_on_floor(): velocity.y -= gravity * delta # Получаем направление движения от ввода var input_dir = Input.get_vector("left", "right", "up", "down") var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() # Обновляем горизонтальную скорость if direction: velocity.x = direction.x * speed velocity.z = direction.z * speed else: # Плавно останавливаемся, если нет ввода velocity.x = move_toward(velocity.x, 0, speed * 10 * delta) velocity.z = move_toward(velocity.z, 0, speed * 10 * delta) # Прыжок if Input.is_action_just_pressed("jump") and is_on_floor(): velocity.y = jump_force # Движение с учётом скольжения move_and_slide() # В Godot 4 move_and_slide не принимает
