diff --git a/audio/sounds/graze.wav b/audio/sounds/graze.wav new file mode 100644 index 0000000..348805e Binary files /dev/null and b/audio/sounds/graze.wav differ diff --git a/audio/sounds/graze.wav.import b/audio/sounds/graze.wav.import new file mode 100644 index 0000000..a7ce0b9 --- /dev/null +++ b/audio/sounds/graze.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cnxsv3xnsxno6" +path="res://.godot/imported/graze.wav-f49f5311e710fd99ff3b969df7e75b99.sample" + +[deps] + +source_file="res://audio/sounds/graze.wav" +dest_files=["res://.godot/imported/graze.wav-f49f5311e710fd99ff3b969df7e75b99.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/objects/bullet_types/test_bullet.gd b/objects/bullet_types/test_bullet.gd index 510855b..23c3dec 100644 --- a/objects/bullet_types/test_bullet.gd +++ b/objects/bullet_types/test_bullet.gd @@ -4,6 +4,7 @@ var speed = Vector2.ZERO var bullet_speed = 2 var angle = randf_range(-360,360) var colors = [Color.RED,Color.BLUE,Color.GREEN,Color.YELLOW,] +var grazed = false func _ready() -> void: var color_choice = randi_range(0,colors.size() - 1) diff --git a/objects/bullet_types/test_bullet.tscn b/objects/bullet_types/test_bullet.tscn index e5945c7..ee218c3 100644 --- a/objects/bullet_types/test_bullet.tscn +++ b/objects/bullet_types/test_bullet.tscn @@ -49,7 +49,9 @@ animations = [{ [sub_resource type="RectangleShape2D" id="RectangleShape2D_ic0v5"] size = Vector2(8, 8) -[node name="TestBullet" type="Node2D"] +[node name="TestBullet" type="Area2D"] +collision_layer = 8 +collision_mask = 2 script = ExtResource("1_nd7f1") [node name="Sprite" type="AnimatedSprite2D" parent="."] @@ -66,11 +68,7 @@ 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"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("RectangleShape2D_ic0v5") [connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="queue_free"] diff --git a/objects/graze/graze_particles.tscn b/objects/graze/graze_particles.tscn index fb42620..647814b 100644 --- a/objects/graze/graze_particles.tscn +++ b/objects/graze/graze_particles.tscn @@ -1,7 +1,4 @@ -[gd_scene load_steps=4 format=3 uid="uid://ykg8dydq006a"] - -[ext_resource type="Script" uid="uid://bdcxqp8royr5u" path="res://objects/scoreitem/scoreitem_particles.gd" id="1_s0vci"] -[ext_resource type="AudioStream" uid="uid://bv6v7v5dtvoii" path="res://audio/sfx/graze.wav" id="2_55vho"] +[gd_scene load_steps=2 format=3 uid="uid://ykg8dydq006a"] [sub_resource type="Gradient" id="Gradient_aeam7"] offsets = PackedFloat32Array(0, 0.513333, 1) @@ -23,10 +20,5 @@ initial_velocity_max = 484.86 scale_amount_min = 1.5 scale_amount_max = 2.5 color_ramp = SubResource("Gradient_aeam7") -script = ExtResource("1_s0vci") - -[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] -stream = ExtResource("2_55vho") -autoplay = true [connection signal="finished" from="." to="." method="_on_finished"] diff --git a/objects/player/bullet_emitter/player_bullet_emitter.gd b/objects/player/bullet_emitter/player_bullet_emitter.gd index c086219..05a8959 100644 --- a/objects/player/bullet_emitter/player_bullet_emitter.gd +++ b/objects/player/bullet_emitter/player_bullet_emitter.gd @@ -1,14 +1,15 @@ extends Node2D @export var bullet_scene: PackedScene - +@onready var timer = $Timer func _input(event: InputEvent) -> void: - if event.is_action_pressed("shoot"): - $Timer.start() - _on_timer_timeout() - elif event.is_action_released("shoot"): - $Timer.stop() + if event.is_action_pressed("shoot"): + if get_parent().can_shoot == true: + $Timer.start() + _on_timer_timeout() + elif event.is_action_released("shoot"): + $Timer.stop() func _on_timer_timeout() -> void: diff --git a/objects/player/player.gd b/objects/player/player.gd index f9354cd..5d5b7d0 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -8,14 +8,19 @@ extends CharacterBody2D @onready var startpos = position var can_die = true +var can_graze = true +var can_shoot = true +var can_move = true var focused: bool: get(): return Input.is_action_pressed(&"focus") func _physics_process(delta: float) -> void: + print(can_die) 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) + if can_move: + velocity = input_dir.normalized() * (move_focused_speed if focused else move_normal_speed) move_and_slide() @@ -25,17 +30,33 @@ func _on_hurtbox_area_entered(area: Area2D) -> void: %AnimationPlayer.play("respawn") position = startpos CurrentGame.change_lives(-1) - can_die = false + set_invincible(true) + set_disabled(true) -func gover(): - print("yeeeowtch!!!") +func set_disabled(truefalse: bool): + velocity = Vector2.ZERO + %HurtboxShape.disabled = truefalse + %CollectionShape.disabled = truefalse + %GrazeShape.disabled = truefalse + can_shoot = !truefalse + can_move = !truefalse + if truefalse == true: + %PlayerBulletEmitter.timer.stop() + else: + if Input.is_action_pressed("shoot"): + %PlayerBulletEmitter.timer.start() + %PlayerBulletEmitter._on_timer_timeout() + +func set_immobile(truefalse: bool): + can_move = truefalse + +func set_invincible(truefalse: bool): + can_die = !truefalse func _on_graze_box_area_entered(area: Area2D) -> void: - %GrazeParticles.emitting = true - CurrentGame.change_graze(1) + if !area.grazed && can_graze: + area.grazed = true + %GrazeSound.play() + %GrazeParticles.emitting = true + CurrentGame.change_graze(1) - - -func _on_animation_player_animation_finished(anim_name: StringName) -> void: - if anim_name == "respawn": - can_die = true diff --git a/objects/player/player.tscn b/objects/player/player.tscn index 71163bb..4cbcdc1 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=3 uid="uid://c714s5d7d5765"] +[gd_scene load_steps=16 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://cre6i8tsdlt7j" path="res://graphics/player/player_1.png" id="2_jnjyq"] @@ -6,6 +6,7 @@ [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"] [ext_resource type="PackedScene" uid="uid://ykg8dydq006a" path="res://objects/graze/graze_particles.tscn" id="6_xkryw"] +[ext_resource type="AudioStream" uid="uid://cnxsv3xnsxno6" path="res://audio/sounds/graze.wav" id="7_ow0dq"] [sub_resource type="SpriteFrames" id="SpriteFrames_xkryw"] animations = [{ @@ -33,6 +34,33 @@ size = Vector2(22, 22) [sub_resource type="CircleShape2D" id="CircleShape2D_gnkmh"] radius = 13.038404 +[sub_resource type="Animation" id="Animation_ow0dq"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} + [sub_resource type="Animation" id="Animation_xkryw"] resource_name = "respawn" length = 5.0 @@ -61,32 +89,33 @@ tracks/1/keys = { "update": 0, "values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1), Color(0, 0, 0, 1), Color(1, 1, 1, 1)] } - -[sub_resource type="Animation" id="Animation_ow0dq"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(5), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] +"values": [{ +"args": [false], +"method": &"set_invincible" +}] } -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite2D:modulate") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(1), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] +"values": [{ +"args": [false], +"method": &"set_disabled" +}] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_m4kly"] @@ -104,7 +133,7 @@ move_focused_speed = 100.0 [node name="Sprite2D" type="AnimatedSprite2D" parent="."] sprite_frames = SubResource("SpriteFrames_xkryw") autoplay = "default" -frame_progress = 0.6766526 +frame_progress = 0.46678153 [node name="Collision" type="CollisionShape2D" parent="."] position = Vector2(0, -0.5) @@ -112,13 +141,15 @@ shape = SubResource("RectangleShape2D_ssrue") debug_color = Color(0.48012203, 0.5821042, 0.20594019, 0.41960785) [node name="PlayerBulletEmitter" parent="." instance=ExtResource("3_ssrue")] +unique_name_in_owner = true [node name="Hurtbox" type="Area2D" parent="."] position = Vector2(0, -1) collision_layer = 2 collision_mask = 8 -[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"] +[node name="HurtboxShape" type="CollisionShape2D" parent="Hurtbox"] +unique_name_in_owner = true shape = SubResource("RectangleShape2D_ow0dq") debug_color = Color(1, 0, 0, 0.44313726) @@ -126,7 +157,8 @@ debug_color = Color(1, 0, 0, 0.44313726) collision_layer = 2 collision_mask = 32 -[node name="CollisionShape2D" type="CollisionShape2D" parent="CollectionBox"] +[node name="CollectionShape" type="CollisionShape2D" parent="CollectionBox"] +unique_name_in_owner = true position = Vector2(0, -0.5) shape = SubResource("RectangleShape2D_jnjyq") @@ -134,18 +166,14 @@ shape = SubResource("RectangleShape2D_jnjyq") position = Vector2(0, -1) collision_mask = 8 -[node name="CollisionShape2D" type="CollisionShape2D" parent="GrazeBox"] +[node name="GrazeShape" type="CollisionShape2D" parent="GrazeBox"] +unique_name_in_owner = true 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") - [node name="GrazeParticles" parent="." instance=ExtResource("6_xkryw")] unique_name_in_owner = true amount = 10 -script = null [node name="AnimationPlayer" type="AnimationPlayer" parent="."] unique_name_in_owner = true @@ -153,6 +181,17 @@ libraries = { &"": SubResource("AnimationLibrary_m4kly") } +[node name="Sounds" type="Node" parent="."] + +[node name="DeathSound" type="AudioStreamPlayer" parent="Sounds"] +unique_name_in_owner = true +stream = ExtResource("5_gnkmh") + +[node name="GrazeSound" type="AudioStreamPlayer" parent="Sounds"] +unique_name_in_owner = true +stream = ExtResource("7_ow0dq") +volume_db = -2.0 + [connection signal="area_entered" from="Hurtbox" to="." method="_on_hurtbox_area_entered"] [connection signal="area_entered" from="GrazeBox" to="." method="_on_graze_box_area_entered"] [connection signal="finished" from="GrazeParticles" to="." method="_on_cpu_particles_2d_finished"] diff --git a/scenes/test_scene_penny.tscn b/scenes/test_scene_penny.tscn index 8078ae3..092ed52 100644 --- a/scenes/test_scene_penny.tscn +++ b/scenes/test_scene_penny.tscn @@ -1,47 +1,29 @@ -[gd_scene load_steps=15 format=3 uid="uid://tt12jx4uauwn"] +[gd_scene load_steps=11 format=3 uid="uid://tt12jx4uauwn"] [ext_resource type="Texture2D" uid="uid://c50bfqprpitev" path="res://icon.svg" id="1_ufr73"] [ext_resource type="PackedScene" uid="uid://c714s5d7d5765" path="res://objects/player/player.tscn" id="2_ikr60"] [ext_resource type="Script" uid="uid://cj2fj7snls8aa" path="res://systems/bullets/bullet_set.gd" id="3_hwssd"] -[ext_resource type="Script" uid="uid://pn143vuxc7wp" path="res://systems/bullets/bullet_actions/despawn_action.gd" id="4_4ctm6"] +[ext_resource type="Script" uid="uid://d238qii8i2byl" path="res://systems/bullets/spawn_patterns/line_pattern.gd" id="5_e0h7n"] [ext_resource type="Script" uid="uid://dntp60my5f65m" path="res://systems/bullets/bullet_behaviors/simple_linear_behavior.gd" id="5_jwla8"] -[ext_resource type="Script" uid="uid://dtuc6qerbfset" path="res://systems/bullets/spawn_patterns/ring_pattern.gd" id="6_5wg4x"] [ext_resource type="Script" uid="uid://vus1a0flwtnm" path="res://systems/bullets/bullet_preset.gd" id="7_qckwa"] -[ext_resource type="Script" uid="uid://5scjonwmg8tw" path="res://systems/bullets/set_behaviors/rotation_set_behavior.gd" id="8_etx6j"] [ext_resource type="Texture2D" uid="uid://du7gh3nk66mpo" path="res://graphics/bullets/normal_bullet/bullet_1.png" id="9_6buwp"] -[sub_resource type="Resource" id="Resource_sle1e"] -script = ExtResource("4_4ctm6") -metadata/_custom_type_script = "uid://pn143vuxc7wp" - -[sub_resource type="Resource" id="Resource_c0i5a"] +[sub_resource type="Resource" id="Resource_ntnp3"] script = ExtResource("5_jwla8") -initial_speed = 128.0 -acceleration = -64.0 -min_speed = 0.0 -action_speed_clamped = SubResource("Resource_sle1e") +initial_speed = 40.0 +acceleration = 10.0 metadata/_custom_type_script = "uid://dntp60my5f65m" -[sub_resource type="Resource" id="Resource_cf1so"] -script = ExtResource("6_5wg4x") -bullet_count = 5 -metadata/_custom_type_script = "uid://dtuc6qerbfset" +[sub_resource type="Resource" id="Resource_es5vp"] +script = ExtResource("5_e0h7n") +bullet_count = 1 +metadata/_custom_type_script = "uid://d238qii8i2byl" -[sub_resource type="Resource" id="Resource_4oowd"] -script = ExtResource("8_etx6j") -rotation_speed = -1.5707963267948966 -spawn_rotation_speed = 6.283185307179586 -metadata/_custom_type_script = "uid://5scjonwmg8tw" - -[sub_resource type="Resource" id="Resource_uu3sg"] +[sub_resource type="Resource" id="Resource_ufr73"] script = ExtResource("7_qckwa") -behavior = SubResource("Resource_c0i5a") +behavior = SubResource("Resource_ntnp3") textures = Array[Texture2D]([ExtResource("9_6buwp")]) -hitbox_size = Vector2i(6, 6) -pattern = SubResource("Resource_cf1so") -rounds = 100000 -round_delay = 0.5 -set_behavior = SubResource("Resource_4oowd") +pattern = SubResource("Resource_es5vp") metadata/_custom_type_script = "uid://vus1a0flwtnm" [node name="TestScene" type="Node"] @@ -56,5 +38,5 @@ position = Vector2(100, 99) [node name="BulletSet" type="Node2D" parent="."] position = Vector2(111, 152) script = ExtResource("3_hwssd") -preset = SubResource("Resource_uu3sg") +preset = SubResource("Resource_ufr73") metadata/_custom_type_script = "uid://cj2fj7snls8aa"