added enemy state machine with idle, stunned, and dead states
This commit is contained in:
@@ -26,39 +26,7 @@ func _ready():
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
if GameGlobals.game_loaded:
|
||||
if enemies.size() > 0:
|
||||
#calculate move position for each child
|
||||
for i in enemies:
|
||||
if i.player_in_view == true:
|
||||
#by number of minions determine the amount they should rotate around the player to be evenly distributed
|
||||
number_enemies = enemies.size()
|
||||
|
||||
#return current array index
|
||||
var enemy_rot_amount = enemies.find(i) * deg_to_rad(360 / number_enemies)
|
||||
var player_pos = i.player.global_transform.origin
|
||||
var enemy_pos = player_pos + Vector3(4,0,0)
|
||||
var nav_pos : Vector3
|
||||
|
||||
nav_pos.x = player_pos.x + (enemy_pos.x-player_pos.x)*cos(enemy_rot_amount) - (enemy_pos.z-player_pos.z)*sin(enemy_rot_amount)
|
||||
nav_pos.z = player_pos.z + (enemy_pos.x-player_pos.x)*sin(enemy_rot_amount) - (enemy_pos.z-player_pos.z)*cos(enemy_rot_amount)
|
||||
|
||||
i.nav_agent.set_target_position(nav_pos)
|
||||
var next_nav_point = i.nav_agent.get_next_path_position()
|
||||
|
||||
i.hive_velocity = (next_nav_point - i.global_transform.origin).normalized() * i.SPEED
|
||||
elif i.player_in_view != true and i.player_last_seen != null:
|
||||
i.nav_agent.set_target_position(i.player_last_seen)
|
||||
var next_nav_point = i.nav_agent.get_next_path_position()
|
||||
i.hive_velocity = (next_nav_point - i.global_transform.origin).normalized() * i.SPEED
|
||||
|
||||
# loot on last enemy
|
||||
if enemies.size() == 1:
|
||||
for i in enemies:
|
||||
i.loot_amount = number_of_drops #assign loot to the last enemy drop from this section
|
||||
i.last_enemy = true
|
||||
else:
|
||||
enemy_in_room_killed()
|
||||
pass
|
||||
|
||||
func assign_elements():
|
||||
for i in self.get_children():
|
||||
|
||||
Reference in New Issue
Block a user