From bc4510a103d10aec3029d3eb70c03a2bc946de65 Mon Sep 17 00:00:00 2001 From: Hazel Snider Date: Sat, 21 Jan 2023 01:36:57 -0500 Subject: [PATCH] spider implementation! death_blood_offset variable added to enemy.gd to facilitate --- graphics/enemy/spider.png | Bin 0 -> 308 bytes graphics/enemy/spider.png.import | 35 +++++++++++++++++++++ maps/canopy.tscn | 8 +++-- objects/enemy/enemy.gd | 3 +- objects/enemy/spider.gd | 34 +++++++++++++++++++++ objects/enemy/spider.tscn | 51 +++++++++++++++++++++++++++++++ 6 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 graphics/enemy/spider.png create mode 100644 graphics/enemy/spider.png.import create mode 100644 objects/enemy/spider.gd create mode 100644 objects/enemy/spider.tscn diff --git a/graphics/enemy/spider.png b/graphics/enemy/spider.png new file mode 100644 index 0000000000000000000000000000000000000000..d21d25d4caf0502b296ff062bedf7f09315ff88b GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^azM<-!3HEPo~^M2QV%^{978O6_f9tCJ7mD)I$v9D z#^#cQwD-JK1$hU~ojEW`GHmmNQ=W4sl^qC5b^Uq%XJ;%!YW$n0tCaS(Zp)ah=yy@~ zOdfO6gOGsu%Q2k(+q0Jy`h3|Wx`N^OXVwOZW2wqV)EV9%-}_{fbonL*9$sPY2}RE8 z&t9jp3RD+7v)j4to$TC4Jh%D77-i2md2QG@t!ZNK8iq%HrLU&)F5ll>=U)-LE9}f~ z?wl9dvo_y5X0R)`c0om2gXj*EXj!>OlO>MnY|jhWX*W+_^iOS;fBeT)T^$pO)VCkV zD%PLzL+L;NKT-J)3#xq{8|OBHe4ZNNnda-upao=e05J$$3Z4w2JYD@<);T3K0RYB| Bd=~%! literal 0 HcmV?d00001 diff --git a/graphics/enemy/spider.png.import b/graphics/enemy/spider.png.import new file mode 100644 index 0000000..b9a90a6 --- /dev/null +++ b/graphics/enemy/spider.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/spider.png-f700df811f96542b517031163b837e41.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/spider.png" +dest_files=[ "res://.import/spider.png-f700df811f96542b517031163b837e41.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/maps/canopy.tscn b/maps/canopy.tscn index 6b8b0b9..0424a91 100644 --- a/maps/canopy.tscn +++ b/maps/canopy.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=1] [ext_resource path="res://maps/map.gd" type="Script" id=2] @@ -8,6 +8,7 @@ [ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=6] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=7] [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/enemy/spider.tscn" type="PackedScene" id=9] [node name="Map" type="Node2D" groups=["map"]] script = ExtResource( 2 ) @@ -23,7 +24,7 @@ texture = ExtResource( 3 ) tile_set = ExtResource( 4 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1507328, 0, 65537, 1507329, 0, 65537, 1507330, 0, 65537, 1507331, 0, 65537, 1507332, 0, 65537, 1507333, 0, 65537, 1507334, 0, 65537, 1507335, 0, 65537, 1507336, 0, 65537, 1507337, 0, 65537, 1507338, 0, 65537, 1507339, 0, 65537, 1507340, 0, 65537, 1507341, 0, 65537, 1507342, 0, 65537, 1507343, 0, 65537, 1507344, 0, 65537, 1507345, 0, 65537, 1507346, 0, 65537, 1507347, 0, 65537, 1507348, 0, 65537, 1507349, 0, 65537, 1507350, 0, 65537, 1507351, 0, 65537, 1507352, 0, 65537, 1507353, 0, 65537, 1507354, 0, 65537, 1507355, 0, 65537, 1507356, 0, 65537, 1507357, 0, 65537, 1507358, 0, 65537, 1507359, 0, 65537 ) +tile_data = PoolIntArray( 983050, 0, 65536, 983051, 0, 65537, 983052, 0, 65537, 983053, 0, 65537, 983054, 0, 65537, 983055, 0, 65537, 983056, 0, 65538, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1507328, 0, 65537, 1507329, 0, 65537, 1507330, 0, 65537, 1507331, 0, 65537, 1507332, 0, 65537, 1507333, 0, 65537, 1507334, 0, 65537, 1507335, 0, 65537, 1507336, 0, 65537, 1507337, 0, 65537, 1507338, 0, 65537, 1507339, 0, 65537, 1507340, 0, 65537, 1507341, 0, 65537, 1507342, 0, 65537, 1507343, 0, 65537, 1507344, 0, 65537, 1507345, 0, 65537, 1507346, 0, 65537, 1507347, 0, 65537, 1507348, 0, 65537, 1507349, 0, 65537, 1507350, 0, 65537, 1507351, 0, 65537, 1507352, 0, 65537, 1507353, 0, 65537, 1507354, 0, 65537, 1507355, 0, 65537, 1507356, 0, 65537, 1507357, 0, 65537, 1507358, 0, 65537, 1507359, 0, 65537 ) [node name="Player" parent="." instance=ExtResource( 6 )] position = Vector2( 24, 166 ) @@ -35,3 +36,6 @@ position = Vector2( 70, 166 ) [node name="Arrow" parent="." instance=ExtResource( 8 )] position = Vector2( 43, 167 ) + +[node name="Spider" parent="." instance=ExtResource( 9 )] +position = Vector2( 120, 144 ) diff --git a/objects/enemy/enemy.gd b/objects/enemy/enemy.gd index 613119c..58b5188 100644 --- a/objects/enemy/enemy.gd +++ b/objects/enemy/enemy.gd @@ -20,6 +20,7 @@ export var score_for_killing = 0 export var blood = true var death_sound = Game.a_die +var death_blood_offset = Vector2.ZERO func _on_Hitbox_area_entered(area): #Kill player @@ -29,7 +30,7 @@ func _on_Hitbox_area_entered(area): func die(): if blood: var death_particles = DeathParticles.instance() - death_particles.global_position = global_position + death_particles.global_position = global_position + death_blood_offset death_particles.emitting = true get_parent().add_child(death_particles) diff --git a/objects/enemy/spider.gd b/objects/enemy/spider.gd new file mode 100644 index 0000000..dc63350 --- /dev/null +++ b/objects/enemy/spider.gd @@ -0,0 +1,34 @@ +extends "res://objects/enemy/enemy.gd" + +export var speed = 0.0 +export var direction = 1.0 + +onready var line = $Line2D +onready var hitbox = $Hitbox + +var floor_y = 0.0 + +func _ready(): + var raycast = $RayCast2D + # detect ceiling + raycast.force_raycast_update() + var old_y = hitbox.global_position.y + global_position.y = raycast.get_collision_point().y + hitbox.global_position.y = old_y + line.points[1].y = hitbox.position.y + # detect floor + raycast.cast_to = Vector2(0.0, 192.0) + raycast.force_raycast_update() + floor_y = to_local(raycast.get_collision_point()).y - 3 + raycast.queue_free() + +func _physics_process(delta): + hitbox.position.y += direction * speed * delta + if hitbox.position.y < 5.0: + hitbox.position.y = 5.0 + direction = 1.0 + if hitbox.position.y > floor_y: + hitbox.position.y = floor_y + direction = -1.0 + line.points[1].y = hitbox.position.y + death_blood_offset = hitbox.position diff --git a/objects/enemy/spider.tscn b/objects/enemy/spider.tscn new file mode 100644 index 0000000..ee6ffeb --- /dev/null +++ b/objects/enemy/spider.tscn @@ -0,0 +1,51 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://graphics/enemy/spider.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/spider.gd" type="Script" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 15, 14 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 15, 0, 15, 14 ) + +[sub_resource type="SpriteFrames" id=3] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 4.5, 4 ) + +[node name="Spider" type="Node2D" groups=["enemy"]] +script = ExtResource( 2 ) +speed = 30.0 + +[node name="Line2D" type="Line2D" parent="."] +position = Vector2( 4.5, 0 ) +points = PoolVector2Array( 0, 0, 0, 0 ) +width = 1.0 +default_color = Color( 1, 1, 1, 1 ) + +[node name="RayCast2D" type="RayCast2D" parent="."] +position = Vector2( 4.5, 4 ) +cast_to = Vector2( 0, -192 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 5, 5 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="Hitbox"] +frames = SubResource( 3 ) +frame = 1 +playing = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -0.5, -1 ) +shape = SubResource( 4 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"]