forked from Julian/contra
51 lines
1.4 KiB
GDScript
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()
|