using Godot; public partial class NPCFollow : CharacterBody3D { [Export] private float _speed = 5f; [Export] private double _followDistance = 2; private Node3D _player; public const float JumpVelocity = 4.5f; public float _gravity = ProjectSettings.GetSetting("physics/3d/default_gravity").AsSingle(); public override void _Ready() { _player = GetNode("/root/Main/Player"); } public override void _PhysicsProcess(double delta) { var playerPosition = _player.Position; var targetPosition = (playerPosition - Position).Normalized(); if (Position.DistanceTo(playerPosition) >= _followDistance) { LookAt(playerPosition - Velocity, Vector3.Up); Velocity = targetPosition * _speed; MoveAndSlide(); } else if (Position.DistanceTo(playerPosition) > _followDistance - 0.4) { LookAt(playerPosition - Velocity, Vector3.Up); MoveAndSlide(); } } }