Ваш код в Godot выглядит правильно, но есть пара моментов, которые можно проверить, чтобы убедиться, что моб работает корректно.
Проверьте подключение сигнала: Убедитесь, что сигнал body_entered подключен к функции _on_detector_body_entered. Это можно сделать в редакторе, выбрав узел, на котором установлен детектор (обычно это Area2D или CollisionShape2D), и в разделе "Node" проверить сигналы.
Проверьте путь к игроку: Убедитесь, что путь к игроку ("$../../Player/Player") правильный. Путь должен быть относительно текущего узла моба. Если структура сцены изменилась, путь может быть другим.
Проверьте слой коллизий: Убедитесь, что и моб, и игрок находятся на правильных слоях коллизий, и эти слои настроены для взаимодействия друг с другом.
Добавьте отладочные выводы: Вставьте вывод в консоль для проверки состояния и значений переменных:
func _on_detector_body_entered(body):
print("Body entered: ", body.name)
if body.name == "Player":
print("Player detected!")
chase = true
Исправление логики: Возможно, стоит изменить проверку на is_on_floor в функции _physics_process. Например, если моб должен двигаться, даже если он не на полу:
func _physics_process(delta):
# Add the gravity.
if not is_on_floor():
velocity.y += gravity * delta
var player = $"/root/Player"
var direction = (player.position - self.position).normalized()
if chase:
velocity.x = direction.x * speed
move_and_slide()
Я добавил моба но он не работает и не двигается когда я вступаю в зону