1
0
forked from Julian/contra
contra/Scripts/EnemyMachine.gd
2024-11-12 18:51:04 +01:00

51 lines
1.4 KiB
GDScript

extends Area2D
var turret_active
var can_shot
var currentBullet = preload("res://scenes/bullet_enemy.tscn")
var lifes = 3
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
if(turret_active):
var players = get_tree().get_nodes_in_group("player")
if(players.size() > 1):
if(abs(players[0].global_position.x - get_parent().global_position.x) < abs(players[1].global_position.x - get_parent().global_position.x)):
$Sprite2D.look_at(players[1].global_position)
else:
$Sprite2D.look_at(players[0].global_position)
elif(players.size() == 1 && players[0] != null):
$Sprite2D.look_at(players[0].global_position)
if(can_shot):
shot()
get_node("cooldown").start()
func shot():
can_shot = false
var newBullet = currentBullet.instantiate()
var lvl = get_tree().get_first_node_in_group("level")
lvl.add_child(newBullet)
for c in newBullet.get_child_count():
newBullet.get_child(c).calcFinalVelocity(-$Sprite2D.rotation_degrees)
newBullet.global_position = $Sprite2D/Aim.global_position
func _on_cooldown_timeout():
can_shot = true
func _on_visible_on_screen_notifier_2d_screen_entered():
turret_active = true
$cooldown.start()
func _on_body_entered(body):
if(body.is_in_group("player_bullet")):
lifes-= 1
body.queue_free()
if(lifes == 0):
queue_free()