Added head-shooting and regeneration feature to player; added first

draft of Maggie's sounds.
This commit is contained in:
Henry 2026-02-11 15:04:59 +00:00
parent accc463791
commit 2cc08692fd
17 changed files with 470 additions and 54 deletions

View file

@ -8,11 +8,15 @@
config_version=5
[animation]
compatibility/default_parent_skeleton_in_mesh_instance_3d=true
[application]
config/name="the third place"
run/main_scene="uid://cc2dnhuv4qx7m"
config/features=PackedStringArray("4.5", "Forward Plus")
config/features=PackedStringArray("4.6", "Forward Plus")
config/icon="res://icon.svg"
[autoload]

View file

@ -16,3 +16,4 @@ func _on_area_entered(area: Area2D) -> void:
if area.is_in_group("enemies"):
area.explode()
queue_free()

View file

@ -1,23 +1,39 @@
[gd_scene load_steps=4 format=3 uid="uid://bwxxdrdvo3le0"]
[gd_scene format=3 uid="uid://bwxxdrdvo3le0"]
[ext_resource type="Script" uid="uid://c6oorp45vpqpc" path="res://scenes/bullet.gd" id="1_v8qja"]
[ext_resource type="Texture2D" uid="uid://bltpqew3le1j" path="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_charged_beam (16 x 16).png" id="2_t4vbm"]
[ext_resource type="Texture2D" uid="uid://bnc77g20gb20h" path="res://sprites/david-head.png" id="2_y25gk"]
[ext_resource type="Texture2D" uid="uid://dwd6pycecukqb" path="res://sprites/david-headshot.png" id="3_l5glv"]
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_eoqba"]
particle_flag_disable_z = true
gravity = Vector3(0, 98, 0)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2b2rl"]
size = Vector2(12, 10)
size = Vector2(12, 11)
[node name="Bullet" type="Area2D"]
[node name="Bullet" type="Area2D" unique_id=1850257077]
script = ExtResource("1_v8qja")
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("2_t4vbm")
hframes = 2
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=29933687]
position = Vector2(1.1920929e-07, 2.9802322e-07)
scale = Vector2(1.1111112, 1.1764706)
texture = ExtResource("2_y25gk")
hframes = 3
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -1)
[node name="GPUParticles2D" type="GPUParticles2D" parent="Sprite2D" unique_id=1840545252]
position = Vector2(-1.0728836e-07, -2.5331974e-07)
amount = 2
texture = ExtResource("3_l5glv")
lifetime = 0.03
explosiveness = 0.21
randomness = 0.15
process_material = SubResource("ParticleProcessMaterial_eoqba")
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1297459172]
position = Vector2(0, -0.5)
shape = SubResource("RectangleShape2D_2b2rl")
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="." unique_id=210965331]
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_visible_on_screen_notifier_2d_screen_exited"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://mp72cjiuquik"]
[gd_scene format=3 uid="uid://mp72cjiuquik"]
[ext_resource type="Script" uid="uid://xoihsrr4hw4k" path="res://scenes/enemy.gd" id="1_4gyqm"]
[ext_resource type="Texture2D" uid="uid://deyu1prtitqcp" path="res://_graphics/Mini Pixel Pack 3/Enemies/Bon_Bon (16 x 16).png" id="1_7k104"]
@ -134,27 +134,25 @@ _data = {
&"explode": SubResource("Animation_epg4t")
}
[node name="Enemy" type="Area2D" groups=["enemies"]]
[node name="EnemyTest" type="Area2D" unique_id=1433837580 groups=["enemies"]]
script = ExtResource("1_4gyqm")
[node name="Sprite2D" type="Sprite2D" parent="."]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2115910138]
texture = ExtResource("1_7k104")
hframes = 4
frame = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1841693239]
shape = SubResource("RectangleShape2D_4gyqm")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_3yqyl")
}
autoplay = "bounce"
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=505814518]
libraries/ = SubResource("AnimationLibrary_3yqyl")
autoplay = &"bounce"
[node name="MoveTimer" type="Timer" parent="."]
[node name="MoveTimer" type="Timer" parent="." unique_id=1928257014]
one_shot = true
[node name="ShootTimer" type="Timer" parent="."]
[node name="ShootTimer" type="Timer" parent="." unique_id=1985644907]
one_shot = true
[connection signal="timeout" from="MoveTimer" to="." method="_on_timer_timeout"]

225
scenes/enemy_test.tscn Normal file
View file

@ -0,0 +1,225 @@
[gd_scene format=3 uid="uid://drwm27rxxpq3t"]
[ext_resource type="Script" uid="uid://xoihsrr4hw4k" path="res://scenes/enemy.gd" id="1_ainam"]
[ext_resource type="Texture2D" uid="uid://deyu1prtitqcp" path="res://_graphics/Mini Pixel Pack 3/Enemies/Bon_Bon (16 x 16).png" id="2_mo2s0"]
[ext_resource type="Texture2D" uid="uid://h04wm5a27u0" path="res://_graphics/Mini Pixel Pack 3/Effects/Explosion (16 x 16).png" id="3_1yn4p"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4gyqm"]
size = Vector2(14, 8)
[sub_resource type="Animation" id="Animation_iifgy"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("2_mo2s0")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:hframes")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [4]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [2]
}
[sub_resource type="Animation" id="Animation_qi2p4"]
resource_name = "bounce"
loop_mode = 1
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("2_mo2s0")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:hframes")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [4]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1023555, 0.2, 0.3, 0.35),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [2, 1, 0, 3, 0]
}
[sub_resource type="Animation" id="Animation_epg4t"]
resource_name = "explode"
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 4, 5]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:texture")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("3_1yn4p")]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:hframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [6]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_3yqyl"]
_data = {
&"RESET": SubResource("Animation_iifgy"),
&"bounce": SubResource("Animation_qi2p4"),
&"explode": SubResource("Animation_epg4t")
}
[sub_resource type="Animation" id="Animation_ainam"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 0)]
}
[sub_resource type="Animation" id="Animation_mo2s0"]
resource_name = "wiggle"
length = 3.0
loop_mode = 1
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 2, 0, 2, 2),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 8, -0.16666667, 0, 0.083333336, 0, 0, -0.16666667, 0, 0, 0, -7, -0.083333336, 1.1666667, 0, 0, 0, -0.16666667, -1.1666667, 0, 0),
"times": PackedFloat32Array(0, 1, 1.5, 2, 3)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:position:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0, 2, 0, 2, 2),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 7.162058, -0.16666667, -1.3333334, 0.083333336, 0.6666667, 12, -0.16666667, -2, 0, 0, 8, -0.083333336, 0.6666667, 0, 0, 0, -0.16666667, 1.3333334, 0, 0),
"times": PackedFloat32Array(0, 1, 1.5, 2, 3)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_1yn4p"]
_data = {
&"RESET": SubResource("Animation_ainam"),
&"wiggle": SubResource("Animation_mo2s0")
}
[sub_resource type="Curve2D" id="Curve2D_1yn4p"]
_data = {
"points": PackedVector2Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -13, 0, 0, 0, 0, 30, 9, 0, 0, 0, 0, 10, 23, 8.891694, -1.4366493, -8.891694, 1.4366493, 0, 27, 0, 0, 0, 0, -18, 7, 0, 0, 0, 0, -14, -11, 0, 0, 0, 0, 0, 0)
}
point_count = 8
[node name="EnemyTest" type="Area2D" unique_id=1433837580 groups=["enemies"]]
script = ExtResource("1_ainam")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2115910138]
texture = ExtResource("2_mo2s0")
hframes = 4
frame = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1841693239]
shape = SubResource("RectangleShape2D_4gyqm")
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=505814518]
libraries/ = SubResource("AnimationLibrary_3yqyl")
autoplay = &"bounce"
[node name="AnimationWiggle" type="AnimationPlayer" parent="." unique_id=800893512]
libraries/ = SubResource("AnimationLibrary_1yn4p")
autoplay = &"MoveAlongPath"
[node name="MoveTimer" type="Timer" parent="." unique_id=1928257014]
one_shot = true
[node name="ShootTimer" type="Timer" parent="." unique_id=1985644907]
one_shot = true
[node name="Path2D" type="Path2D" parent="." unique_id=1830415709]
visible = false
curve = SubResource("Curve2D_1yn4p")
[node name="PathFollow2D" type="PathFollow2D" parent="Path2D" unique_id=1294967533]
visible = false
rotation = -0.7140907
[connection signal="timeout" from="MoveTimer" to="." method="_on_timer_timeout"]
[connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"]

View file

@ -3,7 +3,9 @@ extends Node2D
var enemy = preload("res://scenes/enemy.tscn")
var player = preload("res://scenes/player.tscn")
var instance = null
var playing = false
var playing: bool = false
var enemy_wave: int
var enemy_count: int = 0:
set(value):
if value < 0:
@ -29,6 +31,8 @@ func _ready():
func spawn_enemies():
# print("Remaining enemies: ", enemy_count)
# await get_tree().process_frame
enemy_wave += 1
print("Enemy Wave: ", enemy_wave)
for x in range(COLS):
for y in range(ROWS):
var e = enemy.instantiate()
@ -46,7 +50,9 @@ func _on_enemy_died():
print_debug(enemy_count)
if enemy_count == 0:
print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size())
win_game()
# win_game()
await get_tree().create_timer(2).timeout
spawn_enemies()
if enemy_count == ROWS * COLS / 2:
print_debug("Enemy count is 50%")
update_enemy_aggression(2,10)
@ -87,6 +93,7 @@ func new_game():
get_tree().call_group("enemy_bullets", "queue_free")
# print("Number of enemies at new_game: ",enemy_count)
enemy_count = 0
enemy_wave = 0
await get_tree().process_frame
# Reset score.

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=14 format=3 uid="uid://cc2dnhuv4qx7m"]
[gd_scene format=3 uid="uid://cc2dnhuv4qx7m"]
[ext_resource type="Script" uid="uid://c51huloycn5as" path="res://scenes/main.gd" id="1_h2yge"]
[ext_resource type="PackedScene" uid="uid://tlcdxoupi2lb" path="res://scenes/parallax_starfield.tscn" id="2_5vw27"]
@ -58,24 +58,22 @@ shader_parameter/pixelate_line = 0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_5vw27"]
[node name="Main" type="Node2D"]
[node name="Main" type="Node2D" unique_id=128010797]
script = ExtResource("1_h2yge")
[node name="Parallax Starfield" parent="." instance=ExtResource("2_5vw27")]
[node name="Parallax Starfield" parent="." unique_id=571002326 instance=ExtResource("2_5vw27")]
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_lquwl")
}
autoplay = "scroll"
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=122041916]
libraries/ = SubResource("AnimationLibrary_lquwl")
autoplay = &"scroll"
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1849605109]
[node name="UI" parent="CanvasLayer" instance=ExtResource("4_1bvp3")]
[node name="UI" parent="CanvasLayer" unique_id=1138646344 instance=ExtResource("4_1bvp3")]
offset_right = 196.0
offset_bottom = 36.0
[node name="Title" type="TextureRect" parent="CanvasLayer"]
[node name="Title" type="TextureRect" parent="CanvasLayer" unique_id=561106216]
self_modulate = Color(0.015236704, 0.015236706, 0.0152367065, 1)
material = SubResource("ShaderMaterial_kek77")
offset_left = 50.0
@ -84,22 +82,22 @@ offset_right = 146.0
offset_bottom = 117.0
texture = ExtResource("5_tipki")
[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer"]
[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer" unique_id=1787047882]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Start" type="TextureButton" parent="CanvasLayer/CenterContainer"]
[node name="Start" type="TextureButton" parent="CanvasLayer/CenterContainer" unique_id=735420279]
layout_mode = 2
texture_normal = ExtResource("5_lquwl")
[node name="GameOver" type="TextureRect" parent="CanvasLayer/CenterContainer"]
[node name="GameOver" type="TextureRect" parent="CanvasLayer/CenterContainer" unique_id=2025679102]
layout_mode = 2
texture = ExtResource("6_7mycd")
[node name="background" type="Sprite2D" parent="."]
[node name="background" type="Sprite2D" parent="." unique_id=1790434669]
z_index = -4
texture_repeat = 2
material = SubResource("ShaderMaterial_5vw27")

View file

@ -6,7 +6,7 @@ signal damage_taken
# signal shield_ui
@export var speed: int = 150
@export var cooldown: float = 0.25
@export var cooldown: float = 1
@export var bullet_scene : PackedScene
@export var max_shield: int = 10
var shield: int = 0:
@ -36,7 +36,7 @@ func _ready():
func start():
print(shield)
shader_active = false
$Ship.frame = 1
$Ship.frame = 0
# $Ship/Boosters/BoosterBurst.hide()
# $Ship/Boosters.hide()
$Ship.show()
@ -57,13 +57,16 @@ func _process(delta):
var input = Input.get_vector("left", "right", "up", "down")
if input.x > 0:
$Ship.frame = 2
$Ship/Head.frame = 2
# $Ship/Boosters.animation = "right"
elif input.x < 0:
$Ship.frame = 0
$Ship.frame = 1
$Ship/Head.frame = 1
# $Ship/Boosters.animation = "left"
else:
$Ship.frame = 1
$Ship.frame = 0
$Ship/Boosters.animation = "forward"
$Ship/Head.frame = 0
position += input * speed * delta
position = position.clamp(Vector2(8, 8), screensize - Vector2(8, 8))
if Input.is_action_pressed("shoot"):
@ -74,6 +77,7 @@ func shoot():
return
can_shoot = false
$GunCooldown.start()
$Ship/Head.hide()
var b = bullet_scene.instantiate()
get_tree().root.add_child(b)
b.start(position + ship.position + Vector2(0, -10))
@ -98,6 +102,14 @@ func set_shield(value: int):
func _on_gun_cooldown_timeout() -> void:
$HeadInflate.play()
#tween.tween_property($Ship/Head, "scale", 4, 0.25)
#await tween.finished
await get_tree().create_timer(0.25).timeout
var tween = create_tween().set_parallel(false)
$Ship/Head.show()
tween.tween_property($Ship/Head, "scale", Vector2(2,2), .15).set_trans(Tween.TRANS_BOUNCE)
tween.tween_property($Ship/Head, "scale", Vector2(1,1), .10).set_trans(Tween.TRANS_BOUNCE)
can_shoot = true
func _on_area_entered(area):

View file

@ -1,13 +1,15 @@
[gd_scene load_steps=20 format=3 uid="uid://pyuorpwb7lpe"]
[gd_scene format=3 uid="uid://pyuorpwb7lpe"]
[ext_resource type="Script" uid="uid://dcrnf4r6c5qaw" path="res://scenes/player.gd" id="1_sweqy"]
[ext_resource type="PackedScene" uid="uid://bwxxdrdvo3le0" path="res://scenes/bullet.tscn" id="2_1jxqw"]
[ext_resource type="Texture2D" uid="uid://ces8fm7lxh574" path="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters (16 x 16).png" id="3_1jxqw"]
[ext_resource type="Shader" uid="uid://dfywtah53il1m" path="res://shaders/player_hit.gdshader" id="3_dw050"]
[ext_resource type="Texture2D" uid="uid://bjdhq42ummgky" path="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters_left (16 x 16).png" id="4_dw050"]
[ext_resource type="Texture2D" uid="uid://42nppsb4mtv8" path="res://sprites/coop.png" id="4_smehm"]
[ext_resource type="Texture2D" uid="uid://cjq40d464xovr" path="res://sprites/david-headless-sprite.png" id="4_smehm"]
[ext_resource type="Texture2D" uid="uid://cjv3xbuj65pav" path="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters_right (16 x 16).png" id="5_b26j0"]
[ext_resource type="PackedScene" uid="uid://4jvu41vu2557" path="res://scenes/explosion.tscn" id="8_dw050"]
[ext_resource type="Texture2D" uid="uid://bnc77g20gb20h" path="res://sprites/david-head.png" id="8_ur7pv"]
[ext_resource type="AudioStream" uid="uid://d3ejo2dfxblsx" path="res://sounds/HeadInflatePOP.wav" id="10_y4r1p"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_b26j0"]
shader = ExtResource("3_dw050")
@ -84,27 +86,27 @@ particle_flag_disable_z = true
gravity = Vector3(0, 98, 0)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_op7ga"]
size = Vector2(14, 14)
size = Vector2(14, 12.465912)
[node name="Player" type="Area2D"]
[node name="Player" type="Area2D" unique_id=1628218629]
script = ExtResource("1_sweqy")
bullet_scene = ExtResource("2_1jxqw")
[node name="Ship" type="Sprite2D" parent="." groups=["ship"]]
[node name="Ship" type="Sprite2D" parent="." unique_id=1499605112 groups=["ship"]]
unique_name_in_owner = true
material = SubResource("ShaderMaterial_b26j0")
texture = ExtResource("4_smehm")
hframes = 3
frame = 1
[node name="Boosters" type="AnimatedSprite2D" parent="Ship"]
[node name="Boosters" type="AnimatedSprite2D" parent="Ship" unique_id=1877984106]
visible = false
position = Vector2(0, 15)
sprite_frames = SubResource("SpriteFrames_u1c27")
animation = &"forward"
autoplay = "forward"
[node name="BoosterBurst" type="GPUParticles2D" parent="Ship/Boosters"]
[node name="BoosterBurst" type="GPUParticles2D" parent="Ship/Boosters" unique_id=1873224221]
visible = false
texture_repeat = 2
material = SubResource("CanvasItemMaterial_dw050")
amount = 10
@ -118,16 +120,25 @@ trail_lifetime = 1.85
trail_sections = 2
process_material = SubResource("ParticleProcessMaterial_b26j0")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
[node name="Head" type="Sprite2D" parent="Ship" unique_id=522385006]
position = Vector2(1, -17)
texture = ExtResource("8_ur7pv")
hframes = 3
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1614510161]
position = Vector2(0, -0.4999997)
scale = Vector2(2.0054688, 2.0054688)
shape = SubResource("RectangleShape2D_op7ga")
[node name="GunCooldown" type="Timer" parent="."]
[node name="GunCooldown" type="Timer" parent="." unique_id=831201762]
one_shot = true
[node name="Explosion" parent="." instance=ExtResource("8_dw050")]
[node name="Explosion" parent="." unique_id=321630316 instance=ExtResource("8_dw050")]
visible = false
[node name="HeadInflate" type="AudioStreamPlayer2D" parent="." unique_id=374500278]
stream = ExtResource("10_y4r1p")
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
[connection signal="damage_taken" from="." to="." method="_on_damage_taken"]
[connection signal="timeout" from="GunCooldown" to="." method="_on_gun_cooldown_timeout"]

BIN
sounds/HeadInflatePOP.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d3ejo2dfxblsx"
path="res://.godot/imported/HeadInflatePOP.wav-ad93e386eda46867e419d62e8df3e7ac.sample"
[deps]
source_file="res://sounds/HeadInflatePOP.wav"
dest_files=["res://.godot/imported/HeadInflatePOP.wav-ad93e386eda46867e419d62e8df3e7ac.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

BIN
sprites/david-head.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bnc77g20gb20h"
path="res://.godot/imported/david-head.png-3fc14615e7410fbe172a768e810dbd1e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/david-head.png"
dest_files=["res://.godot/imported/david-head.png-3fc14615e7410fbe172a768e810dbd1e.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cjq40d464xovr"
path="res://.godot/imported/david-headless-sprite.png-b48933a48d1fca98d1e6af59d891a75d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/david-headless-sprite.png"
dest_files=["res://.godot/imported/david-headless-sprite.png-b48933a48d1fca98d1e6af59d891a75d.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

BIN
sprites/david-headshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dwd6pycecukqb"
path="res://.godot/imported/david-headshot.png-13da436758ece3b09e7aa54a2545744e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/david-headshot.png"
dest_files=["res://.godot/imported/david-headshot.png-13da436758ece3b09e7aa54a2545744e.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