extends CharacterBody2D var maxspeed = 80 # Called when the node enters the scene tree for the first time. func _ready() -> void: pass # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): var direction = get_directionToLayer() velocity = maxspeed * direction # Присваиваем новое значение velocity move_and_slide() # move_and_slide автоматически использует velocity # Получаем направление к игроку func get_directionToLayer() -> Vector2: var player = get_tree().get_first_node_in_group("player") as Node2D if player != null: # Направление к игроку return (player.position - position).normalized() return Vector2(0, 0) # Если игрок не найден, не двигаемся
исправленный код extends CharacterBody2D var maxspeed = 80 var velocity = Vector2() # Инициализируем переменную для хранения текущей скорости # Called when the node enters the scene tree for the first time. func _ready() -> void: pass # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): var direction = get_directionToLayer() velocity = direction * maxspeed # Присваиваем новое значение velocity, корректируя направление и скорость move_and_slide(velocity) # Передаем в move_and_slide актуальное значение скорости # Получаем направление к игроку func get_directionToLayer() -> Vector2: var player = get_tree().get_first_node_in_group("player") as Node2D if player != null: # Направление к игроку return (player.position - position).normalized() return Vector2(0, 0) # Если игрок не найден, не двигаемся Код extends CharacterBody2D var maxspeed = 80 var velocity = Vector2() # Инициализируем переменную для хранения текущей скорости # Called when the node enters the scene tree for the first time. func _ready() -> void: pass # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): var direction = get_directionToLayer() velocity = direction * maxspeed # Присваиваем новое значение velocity, корректируя направление и скорость move_and_slide(velocity) # Передаем в move_and_slide актуальное значение скорости # Получаем направление к игроку func get_directionToLayer() -> Vector2: var player = get_tree().get_first_node_in_group("player") as Node2D if player != null: # Направление к игроку return (player.position - position).normalized() return Vector2(0, 0) # Если игрок не найден, не двигаемся
525, Ошибка в том, что ты напрямую присваиваешь вектор velocity в move_and_slide, не учитывая, что velocity должен быть объектом типа Vector2, который должен обновляться в каждом кадре. Также не учитывается возможная текущая скорость, из-за чего враг может двигаться рывками. Нужно правильно передавать и обновлять velocity для плавного движения.
Проси чатжпт чтоб он искал в инете когда через него генеришь код, у него база по старой версии. И у тебя там для версии 4.3 явно ошибка, там move_and_slide без параметров вызывается. Просто устанавливаешь значение velocity или linear_velocity и вызываешь внутри _physics_process move_and_slide