32 lines
974 B
GDScript
32 lines
974 B
GDScript
extends CharacterState
|
|
class_name NPCIdle
|
|
|
|
@export var wander_distance_max : float = 15.0
|
|
@export var scan_time : float = 3
|
|
|
|
func Enter():
|
|
get_new_wander_point()
|
|
|
|
func Update(delta):
|
|
update_look_target()
|
|
rotate_to_face3D(character.head,look_target,Vector3.ZERO,delta,head_turn_speed)
|
|
#if navigation is finished get new point, otherwise continue on path
|
|
if character.nav_agent.is_navigation_finished():
|
|
get_new_wander_point()
|
|
else:
|
|
move_to_nav_point(delta)
|
|
|
|
func update_look_target():
|
|
var player = get_tree().current_scene.player
|
|
if character.global_position.distance_to(player.global_position) < 5:
|
|
look_target = player
|
|
else:
|
|
look_target = move_target
|
|
|
|
func get_new_wander_point():
|
|
var x = randf_range(-wander_distance_max,wander_distance_max)
|
|
var z = randf_range(-wander_distance_max,wander_distance_max)
|
|
move_target = character.global_position + Vector3(x,0,z)
|
|
character.nav_agent.set_target_position(move_target)
|
|
print("MOVE TARGET : ",move_target)
|