44 lines
1.3 KiB
GDScript
44 lines
1.3 KiB
GDScript
extends "res://objects/enemy/enemy.gd"
|
|
|
|
const ArrowProjectile = preload("res://objects/player/arrow_projectile.tscn")
|
|
const BoneParticle = preload("res://objects/enemy/bone_particle.tscn")
|
|
const arrowpos = Vector2(4,4)
|
|
|
|
export var shoot_time = 1.0
|
|
export var arrow_speed = 120.0
|
|
# bone death particles
|
|
export var bones_amount = 12
|
|
export var bones_speed = 50.0
|
|
|
|
onready var timer = $Timer
|
|
onready var anims = $AnimationPlayer
|
|
onready var sprite = $Sprite
|
|
|
|
func _ready():
|
|
timer.start(shoot_time)
|
|
|
|
func _on_Timer_timeout():
|
|
anims.play("shoot")
|
|
|
|
func spawn_arrow():
|
|
var arrow = ArrowProjectile.instance()
|
|
arrow.global_position = Vector2(
|
|
global_position.x + arrowpos.x * sprite.scale.x,
|
|
global_position.y + arrowpos.y
|
|
)
|
|
arrow.direction = sprite.scale.x
|
|
arrow.target_group = "player"
|
|
arrow.speed = arrow_speed
|
|
Game.get_map().add_child(arrow)
|
|
timer.start(shoot_time)
|
|
|
|
func die():
|
|
for n in bones_amount:
|
|
var bone = BoneParticle.instance()
|
|
bone.rotation = rand_range(0.0, 2.0*PI) # random rotation
|
|
bone.global_position = global_position
|
|
bone.linear_velocity = Vector2(bones_speed, 0.0).rotated(rand_range(-PI, 0.0))
|
|
var timer = get_tree().create_timer(3.0 + rand_range(0.0, 1.0), false)
|
|
timer.connect("timeout", bone, "queue_free")
|
|
get_parent().add_child(bone)
|
|
.die() # call rest of enemy.gd die() funciton
|