diff --git a/audio/sounds/se_boom.wav b/audio/sounds/se_boom.wav new file mode 100644 index 0000000..4287ee5 Binary files /dev/null and b/audio/sounds/se_boom.wav differ diff --git a/audio/sounds/se_boom.wav.import b/audio/sounds/se_boom.wav.import new file mode 100644 index 0000000..59c5638 --- /dev/null +++ b/audio/sounds/se_boom.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b3byh6su1b11r" +path="res://.godot/imported/se_boom.wav-330226db5bbd147fe6d9f88a513e8f11.sample" + +[deps] + +source_file="res://audio/sounds/se_boom.wav" +dest_files=["res://.godot/imported/se_boom.wav-330226db5bbd147fe6d9f88a513e8f11.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/graphics/player/player_1.png b/graphics/player/player_1.png new file mode 100644 index 0000000..a2df004 Binary files /dev/null and b/graphics/player/player_1.png differ diff --git a/graphics/player/player_1.png.import b/graphics/player/player_1.png.import new file mode 100644 index 0000000..de986b1 --- /dev/null +++ b/graphics/player/player_1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cre6i8tsdlt7j" +path="res://.godot/imported/player_1.png-93a8dc738741f5e9373da5817d7a849b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/player_1.png" +dest_files=["res://.godot/imported/player_1.png-93a8dc738741f5e9373da5817d7a849b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/graphics/player/player_2.png b/graphics/player/player_2.png new file mode 100644 index 0000000..611c208 Binary files /dev/null and b/graphics/player/player_2.png differ diff --git a/graphics/player/player_2.png.import b/graphics/player/player_2.png.import new file mode 100644 index 0000000..8e99a4c --- /dev/null +++ b/graphics/player/player_2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://df037prnk1137" +path="res://.godot/imported/player_2.png-7b15310f5f9308ebe1dab9f4facbe63a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/player_2.png" +dest_files=["res://.godot/imported/player_2.png-7b15310f5f9308ebe1dab9f4facbe63a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/graphics/player/player_3.png b/graphics/player/player_3.png new file mode 100644 index 0000000..b3121db Binary files /dev/null and b/graphics/player/player_3.png differ diff --git a/graphics/player/player_3.png.import b/graphics/player/player_3.png.import new file mode 100644 index 0000000..3e77140 --- /dev/null +++ b/graphics/player/player_3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cr8jegbgl0wxn" +path="res://.godot/imported/player_3.png-99cd0b18553d1a1e86f956802601092f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/player_3.png" +dest_files=["res://.godot/imported/player_3.png-99cd0b18553d1a1e86f956802601092f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/objects/bullet_emitter/test_bullet_emitter.gd b/objects/bullet_emitter/test_bullet_emitter.gd index 7d8080e..855019f 100644 --- a/objects/bullet_emitter/test_bullet_emitter.gd +++ b/objects/bullet_emitter/test_bullet_emitter.gd @@ -2,6 +2,6 @@ extends BulletEmitter func _on_timer_timeout() -> void: - for i in range(500): + for i in range(50): emit_bullets() %AudioStreamPlayer.play() diff --git a/objects/bullet_types/test_bullet.tscn b/objects/bullet_types/test_bullet.tscn index 34bf3a2..e5945c7 100644 --- a/objects/bullet_types/test_bullet.tscn +++ b/objects/bullet_types/test_bullet.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://je8ntnqgk0p6"] +[gd_scene load_steps=9 format=3 uid="uid://je8ntnqgk0p6"] [ext_resource type="Script" uid="uid://dgrxej0tqnnfd" path="res://objects/bullet_types/test_bullet.gd" id="1_nd7f1"] [ext_resource type="Texture2D" uid="uid://du7gh3nk66mpo" path="res://graphics/bullets/normal_bullet/bullet_1.png" id="2_gcdq1"] @@ -46,6 +46,9 @@ animations = [{ "speed": 20.0 }] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ic0v5"] +size = Vector2(8, 8) + [node name="TestBullet" type="Node2D"] script = ExtResource("1_nd7f1") @@ -63,4 +66,11 @@ frame_progress = 0.21053335 [node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] rect = Rect2(-4, -4, 8, 8) +[node name="Area2D" type="Area2D" parent="."] +collision_layer = 8 +collision_mask = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("RectangleShape2D_ic0v5") + [connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="queue_free"] diff --git a/objects/player/player.gd b/objects/player/player.gd index d08198b..cc21c70 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -5,7 +5,7 @@ extends CharacterBody2D @export_group("Movement", "move_") @export var move_normal_speed: float @export var move_focused_speed: float - +@onready var startpos = position var focused: bool: get(): return Input.is_action_pressed(&"focus") @@ -15,5 +15,9 @@ func _physics_process(delta: float) -> void: var input_dir = Input.get_vector(&"move_left", &"move_right", &"move_up", &"move_down").sign() velocity = input_dir.normalized() * (move_focused_speed if focused else move_normal_speed) - move_and_slide() + + +func _on_hurtbox_area_entered(area: Area2D) -> void: + %DeathSound.play() + position = startpos diff --git a/objects/player/player.tscn b/objects/player/player.tscn index 15926c2..16b11d9 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,21 +1,81 @@ -[gd_scene load_steps=5 format=3 uid="uid://c714s5d7d5765"] +[gd_scene load_steps=11 format=3 uid="uid://c714s5d7d5765"] [ext_resource type="Script" uid="uid://bpo15kuxdmulu" path="res://objects/player/player.gd" id="1_cqmt1"] -[ext_resource type="Texture2D" uid="uid://c82cpqafy7a23" path="res://testship.png" id="2_ssrue"] +[ext_resource type="Texture2D" uid="uid://cre6i8tsdlt7j" path="res://graphics/player/player_1.png" id="2_jnjyq"] +[ext_resource type="Texture2D" uid="uid://cr8jegbgl0wxn" path="res://graphics/player/player_3.png" id="3_gnkmh"] [ext_resource type="PackedScene" uid="uid://bs0tv5ubqdjp0" path="res://objects/player/bullet_emitter/player_bullet_emitter.tscn" id="3_ssrue"] +[ext_resource type="AudioStream" uid="uid://b3byh6su1b11r" path="res://audio/sounds/se_boom.wav" id="5_gnkmh"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_xkryw"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_jnjyq") +}, { +"duration": 1.0, +"texture": ExtResource("3_gnkmh") +}], +"loop": true, +"name": &"default", +"speed": 9.0 +}] [sub_resource type="RectangleShape2D" id="RectangleShape2D_ssrue"] -size = Vector2(24, 24) +size = Vector2(20, 19) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ow0dq"] +size = Vector2(4, 4) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_jnjyq"] +size = Vector2(22, 22) + +[sub_resource type="CircleShape2D" id="CircleShape2D_gnkmh"] +radius = 5.0990195 [node name="Player" type="CharacterBody2D"] +collision_layer = 2 script = ExtResource("1_cqmt1") move_normal_speed = 200.0 move_focused_speed = 100.0 -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource("2_ssrue") +[node name="Sprite2D" type="AnimatedSprite2D" parent="."] +sprite_frames = SubResource("SpriteFrames_xkryw") +frame_progress = 0.64341116 [node name="Collision" type="CollisionShape2D" parent="."] +position = Vector2(0, -0.5) shape = SubResource("RectangleShape2D_ssrue") +debug_color = Color(0.48012203, 0.5821042, 0.20594019, 0.41960785) [node name="PlayerBulletEmitter" parent="." instance=ExtResource("3_ssrue")] +bullet_scene = null + +[node name="Hurtbox" type="Area2D" parent="."] +position = Vector2(0, -1) +collision_layer = 2 +collision_mask = 8 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"] +shape = SubResource("RectangleShape2D_ow0dq") +debug_color = Color(1, 0, 0, 0.44313726) + +[node name="CollectionBox" type="Area2D" parent="."] +collision_layer = 2 +collision_mask = 32 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CollectionBox"] +position = Vector2(0, -0.5) +shape = SubResource("RectangleShape2D_jnjyq") + +[node name="GrazeBox" type="Area2D" parent="."] +position = Vector2(0, -1) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="GrazeBox"] +shape = SubResource("CircleShape2D_gnkmh") +debug_color = Color(0.7740294, 0.14773864, 0.99999994, 0.41960785) + +[node name="DeathSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource("5_gnkmh") + +[connection signal="area_entered" from="Hurtbox" to="." method="_on_hurtbox_area_entered"] diff --git a/project.godot b/project.godot index cb59843..9e2b1ff 100644 --- a/project.godot +++ b/project.godot @@ -76,9 +76,13 @@ focus={ [layer_names] -2d_physics/layer_1="obstacle" +2d_physics/layer_1="collision" 2d_physics/layer_2="player" 2d_physics/layer_3="player_bullet" +2d_physics/layer_4="hurt_player" +2d_physics/layer_5="enemy" +2d_physics/layer_6="powerup" +2d_physics/layer_7="graze" [rendering] diff --git a/scenes/test_scene.tscn b/scenes/test_scene.tscn new file mode 100644 index 0000000..7a7a3c6 --- /dev/null +++ b/scenes/test_scene.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://cfn5pgsewhaof"] + +[ext_resource type="Texture2D" uid="uid://c50bfqprpitev" path="res://icon.svg" id="1_g7g4h"] +[ext_resource type="PackedScene" uid="uid://c714s5d7d5765" path="res://objects/player/player.tscn" id="2_j8ivh"] + +[node name="TestScene" type="Node"] + +[node name="Icon" type="Sprite2D" parent="."] +position = Vector2(110, 187) +texture = ExtResource("1_g7g4h") + +[node name="Player" parent="." instance=ExtResource("2_j8ivh")] +position = Vector2(100, 99)