Initial repo
This commit is contained in:
86
Scripts/enemy_xwing.gd
Normal file
86
Scripts/enemy_xwing.gd
Normal file
@@ -0,0 +1,86 @@
|
||||
extends Area2D
|
||||
|
||||
signal enemy_died()
|
||||
|
||||
@export var speed : int = 150
|
||||
|
||||
#position where the thing shoots from
|
||||
@onready var marker = $Marker2D
|
||||
|
||||
#sensor location, central just for testing
|
||||
@onready var ray1 = $RayCast2D
|
||||
|
||||
signal missile_spawn()
|
||||
|
||||
#health, duh.
|
||||
var health = 3
|
||||
|
||||
#had to add for things that require sensors, going to require moving one for turrets maybe?
|
||||
#for tutorial https://www.youtube.com/watch?v=V_gaCLbWqzk&ab_channel=KaanAlpar
|
||||
func _ready():
|
||||
ray1.exclude_parent = true
|
||||
ray1.collide_with_areas = true
|
||||
|
||||
|
||||
#setting variable if it can shoot used later.
|
||||
var can_shoot = true
|
||||
#testing for the raycast feature.
|
||||
#func _process(delta):
|
||||
#print(ray1.is_colliding())
|
||||
#print(ray1.get_collider())
|
||||
|
||||
func _physics_process(delta):
|
||||
#movement
|
||||
global_position.y += speed * delta
|
||||
#detecting player in area.
|
||||
if ray1.is_colliding and ray1.get_collider() is player:
|
||||
if can_shoot == true:
|
||||
#shooting
|
||||
fire_enemy_laser()
|
||||
#starting firing timer so it cant just spam.
|
||||
$Firing_timer.start()
|
||||
can_shoot = false
|
||||
|
||||
func take_damage(damage):
|
||||
health -= damage
|
||||
if health <= 0:
|
||||
$death_timer.start()
|
||||
#$AnimatedSprite2D.play("death")
|
||||
emit_signal("enemy_died")
|
||||
get_tree().current_scene.scored()
|
||||
power_up_check()
|
||||
#print(str(get_tree().current_scene.player.global_position))
|
||||
|
||||
|
||||
|
||||
func fire_enemy_laser():
|
||||
get_tree().current_scene.fire_enemy_laser(marker.global_position)
|
||||
|
||||
func power_up_check():
|
||||
var index = randi() % 51
|
||||
|
||||
# 1 - 40 does nothing
|
||||
# 40-48 spawns missiles
|
||||
# 49 spawns nothing
|
||||
# 50 spawns nothing
|
||||
|
||||
#1-39+ 40 does nothing.
|
||||
if index <= 39:
|
||||
pass
|
||||
# if greater than or equal to 40, and less than or equal to 48 it spawns stuff
|
||||
elif index >= 40 and index <= 48:
|
||||
get_tree().current_scene.missile_spawn(marker.global_position)
|
||||
|
||||
#get_tree().current_scene.missile_spawn(marker.global_position)
|
||||
|
||||
func _on_area_entered(area):
|
||||
if area is player:
|
||||
area.take_damage(1)
|
||||
|
||||
|
||||
func _on_death_timer_timeout():
|
||||
queue_free() # Replace with function body.
|
||||
|
||||
|
||||
func _on_firing_timer_timeout():
|
||||
can_shoot = true
|
||||
Reference in New Issue
Block a user