Files
Embodiment/Enemies/Ghost_Enemy.gd
2021-12-09 20:39:56 -06:00

62 lines
1.5 KiB
GDScript3

extends KinematicBody2D
# Declare member variables here. Examples:
# var a: int = 2
# var b: String = "text"
export var Fireball: PackedScene
onready var player = null
var move = Vector2.ZERO
var SPEED = 50
var counter = 0
var velocity: Vector2 = Vector2.ZERO
var health: int = 4
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
self.visible = false
func _physics_process(delta):
velocity = Vector2.ZERO
if player and position.distance_to(player.position) > 1:
velocity = position.direction_to(player.position).normalized() * SPEED
velocity = move_and_slide(velocity)
func _on_Area2D_body_entered(body):
if body.is_in_group('player'):
player = body
if counter == 0:
self.visible = true
$AnimatedSprite.play("appear")
counter = 1
func _on_AnimatedSprite_animation_finished():
$AnimatedSprite.play("idle")
func _on_Hitbox_area_entered(area):
if area.is_in_group('player_weapon_1'):
health -= 1
elif area.is_in_group('player_weapon_2'):
health -= 2
if health <= 0:
$AnimatedSprite.play("vanish")
yield($AnimatedSprite, "animation_finished")
call_deferred('queue_free')
return
func _on_Projectile_Timer_timeout():
if player:
var projectile: Node = Fireball.instance()
projectile.init($AnimatedSprite.global_position, player.position)
get_tree().get_current_scene().get_node('Projectiles').add_child(projectile)
$AnimatedSprite.play("shriek")