extends KinematicBody export(NodePath) var player_path export(float) var speed var _current_nav_path: PoolVector3Array var _player onready var _navigation = get_parent() func _ready(): _player = get_node(player_path) func _process(delta): var to = _navigation.get_closest_point(_player.transform.origin) _current_nav_path = _navigation.get_simple_path(transform.origin, to) var dir: Vector3 if _current_nav_path.size() > 0: var index = 0 if (_current_nav_path[0] - transform.origin).length() < 0.1: index = 1 dir = (_current_nav_path[index] - transform.origin).normalized() else: dir = (_player.transform.origin - transform.origin).normalized() move_and_slide(dir * speed)