diff --git a/graphics/enemy/bone.png b/graphics/enemy/bone.png new file mode 100644 index 0000000..769a583 Binary files /dev/null and b/graphics/enemy/bone.png differ diff --git a/graphics/enemy/bone.png.import b/graphics/enemy/bone.png.import new file mode 100644 index 0000000..75284bb --- /dev/null +++ b/graphics/enemy/bone.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bone.png-2137b92417f1b30af907afa9deaf8132.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/bone.png" +dest_files=[ "res://.import/bone.png-2137b92417f1b30af907afa9deaf8132.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/enemy/bone_particle.tscn b/objects/enemy/bone_particle.tscn new file mode 100644 index 0000000..f42ccaa --- /dev/null +++ b/objects/enemy/bone_particle.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/enemy/bone.png" type="Texture" id=1] + +[sub_resource type="PhysicsMaterial" id=2] +bounce = 0.75 + +[sub_resource type="SegmentShape2D" id=1] +a = Vector2( 0, -2 ) +b = Vector2( 0, 2 ) + +[node name="BoneParticle" type="RigidBody2D"] +physics_material_override = SubResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) diff --git a/objects/enemy/skelarcher.gd b/objects/enemy/skelarcher.gd index 248f79a..48c961d 100644 --- a/objects/enemy/skelarcher.gd +++ b/objects/enemy/skelarcher.gd @@ -1,21 +1,22 @@ 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 -const ArrowProjectile = preload("res://objects/player/arrow_projectile.tscn") -const arrowpos = Vector2(4,4) - func _ready(): timer.start(shoot_time) -func _process(delta): - Debug.print(Game.get_map()) - func _on_Timer_timeout(): anims.play("shoot") @@ -30,3 +31,14 @@ func spawn_arrow(): 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