Idle state is simplified and looking good
This commit is contained in:
@@ -3,12 +3,16 @@ class_name EnemyState
|
||||
|
||||
@export var enemy : CharacterBody3D
|
||||
@export var move_speed : float = 3
|
||||
@export var body_turn_speed : float = 3
|
||||
@export var turret_speed : float = 6.0
|
||||
@export var can_see : bool = true # indicates whether the enemy is able to see things in the state
|
||||
@export var time_to_lose_target = 1.0
|
||||
|
||||
@onready var target_lost_timer = time_to_lose_target
|
||||
|
||||
var move_target
|
||||
var look_target
|
||||
|
||||
func enemy_has_target():
|
||||
if enemy.player_last_seen != null:
|
||||
return true
|
||||
@@ -21,12 +25,8 @@ func update_move_target():
|
||||
return enemy.player_last_seen
|
||||
elif enemy.point_of_interest != null:
|
||||
return enemy.point_of_interest["point"]
|
||||
|
||||
func update_waypoint_or_idle():
|
||||
if enemy_has_target():
|
||||
update_move_target()
|
||||
else:
|
||||
Transitioned.emit(self,"idle")
|
||||
return enemy.global_position
|
||||
|
||||
func attack_on_sight():
|
||||
if can_see:
|
||||
@@ -65,3 +65,21 @@ func rotate_to_face2D(object,target,delta,turn_speed):
|
||||
|
||||
func clear_point_of_interest():
|
||||
enemy.point_of_interest = null
|
||||
|
||||
func move_to_nav_point(delta):
|
||||
var destination = enemy.nav_agent.get_next_path_position()
|
||||
var local_destination = destination - enemy.global_position
|
||||
var direction = local_destination.normalized()
|
||||
if enemy.global_position.distance_to(destination) > 1:
|
||||
enemy.velocity = direction * move_speed
|
||||
enemy.global_rotation.y = rotate_to_face2D(enemy,destination,delta,body_turn_speed)
|
||||
|
||||
func turret_look(delta):
|
||||
enemy.turret_look.global_rotation.y = rotate_to_face2D(enemy.turret_look,move_target,delta,50)
|
||||
|
||||
func debug_marker(target_pos):
|
||||
if enemy.debug_tools:
|
||||
enemy.debug_tracker.visible = true
|
||||
enemy.debug_tracker.global_position = target_pos
|
||||
else:
|
||||
enemy.debug_tracker.visible = false
|
||||
|
||||
Reference in New Issue
Block a user