2019-11-23 15:52:41 +01:00

31 lines
704 B
GDScript

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)