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")