Added maggie's CRT destruction sound.

This commit is contained in:
Henry 2026-02-22 20:42:15 +00:00
parent 661098529d
commit 7e75a96795
8 changed files with 160 additions and 66 deletions

View file

@ -1,11 +1,16 @@
extends Area2D
@onready var bullet = $Bullet/Sprite2D
@export var speed = -250
var shader_active = false
var pause = false
func start(pos):
position = pos
func _process(delta):
if pause == true: return
position.y += speed * delta
# Signal checks to see if the bullet leaves the viewport then removes bullet.
@ -13,7 +18,32 @@ func _on_visible_on_screen_notifier_2d_screen_exited() -> void:
queue_free()
func _on_area_entered(area: Area2D) -> void:
if area.is_in_group("enemies"):
area.explode()
queue_free()
var enemies = get_tree().get_nodes_in_group("enemies")
for enemy in enemies:
match enemy.enemy_type:
"crt":
if area.is_in_group("enemies"):
if enemy.vulnerable == true:
area.explode()
queue_free()
if enemy.vulnerable == false:
print("blocked!")
enemy.block()
#await bullet_fx()
queue_free()
_:
if area.is_in_group("enemies"):
area.explode()
queue_free()
#func bullet_fx():
#shader_active = true
#bullet.material.set_shader_parameter("toggle", 1.0)
#pause = true
#await get_tree().create_timer(1).timeout
#pause = false
#shader_active = false
#bullet.material.set_shader_parameter("toggle", 0.0)

View file

@ -1,9 +1,14 @@
[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="Shader" uid="uid://dfywtah53il1m" path="res://shaders/player_hit.gdshader" id="2_eoqba"]
[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="ShaderMaterial" id="ShaderMaterial_qncy5"]
shader = ExtResource("2_eoqba")
shader_parameter/toggle = 0.0
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_eoqba"]
particle_flag_disable_z = true
gravity = Vector3(0, 98, 0)
@ -16,6 +21,7 @@ z_index = -1
script = ExtResource("1_v8qja")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=29933687]
material = SubResource("ShaderMaterial_qncy5")
position = Vector2(1.1920929e-07, 2.9802322e-07)
scale = Vector2(1.1111112, 1.1764706)
texture = ExtResource("2_y25gk")

View file

@ -1,5 +1,7 @@
extends Area2D
var enemy_type: String = "chicken"
var bullet_scene = preload("res://scenes/enemy_bullet.tscn")
var start_pos = Vector2.ZERO
var speed = 0

View file

@ -1,28 +1,40 @@
extends Area2D
var enemy_type: String = "crt"
var bullet_scene = preload("res://scenes/enemy_bullet.tscn")
var start_pos = Vector2.ZERO
var move_break
var speed = 0
var direction = Vector2(0,1)
var tween_speed: float = 1.4
var exploding = false
var can_shoot = true
var vulnerable = true
var stunned = false
var blocking = false
var shader_active = false
var enemy_move_aggression = randf_range(5, 20)
var enemy_shoot_aggression = randf_range(4, 20)
const TILE = 32
@onready var screensize = get_viewport_rect().size
@onready var timer = $MoveTimer
@onready var crt = $EnemyCRT/CRT
func _ready():
timer.start()
func start(pos):
speed = 2
var pos_mod = randf_range(-32,32) #modify the start position randomly
position = Vector2(pos.x + pos_mod, -pos.y) #add the modifier
#position = Vector2(pos.x, -pos.y)
$CRT.frame = 0
#var pos_mod = randf_range(-TILE,TILE) #modify the start position randomly
#position = Vector2(pos.x + pos_mod, -pos.y) #add the modifier
position = Vector2(pos.x, -pos.y)
start_pos = pos
await get_tree().create_timer(randf_range(0.25, 0.55)).timeout
var tween = create_tween().set_trans(Tween.TRANS_BACK)
@ -38,65 +50,74 @@ func _on_timer_timeout():
$DirectionTimer.start()
func _on_direction_timer_timeout():
direction = Vector2(randf_range(-1, 1), randf_range(0, 1))
direction = direction.snapped(Vector2(0,1))
match direction:
Vector2(0,1):
$EnemyCRT.set_frame(0)
Vector2(1,0):
$EnemyCRT.set_frame(1)
Vector2(-1,0):
$EnemyCRT.set_frame(2)
var move_direction = int(randf_range(0,2))
match move_direction:
0:
$CRT.frame = 0
direction = Vector2(0,1)
can_shoot = true
vulnerable = true
1:
$CRT.frame = 1
direction = Vector2(1,0)
can_shoot = false
vulnerable = false
2:
$CRT.frame = 2
direction = Vector2(-1,0)
can_shoot = false
vulnerable = false
$DirectionTimer.start()
func _on_shoot_timer_timeout():
var b = bullet_scene.instantiate()
get_tree().root.add_child(b)
b.start(position)
$ShootTimer.wait_time = randf_range(4, 20)
$ShootTimer.start()
if can_shoot == true:
var b = bullet_scene.instantiate()
get_tree().root.add_child(b)
b.start(position)
$ShootTimer.wait_time = randf_range(4, 20)
$ShootTimer.start()
else:
$ShootTimer.start()
func _process(delta):
if stunned == true:
return
position += direction * speed * delta
if position.x > screensize.x + 32:
start(start_pos)
#direction = direction.snapped(Vector2(1, 0)) # Snap to horizontal
#direction = direction.snapped(Vector2(0, 1)) # Snap to vertical
if position.y > screensize.y + 32:
start(start_pos)
#if position.x > screensize.x + 32:
#start(start_pos)
#
#if position.x < screensize.x + 32:
#start(start_pos)
#if Input.is_action_just_pressed("ui_right"):
#direction = Vector2(1, 0) # Move right
#elif Input.is_action_just_pressed("ui_left"):
#direction = Vector2(-1, 0) # Move left
#elif Input.is_action_just_pressed("ui_up"):
#direction = Vector2(0, -1) # Move up
#elif Input.is_action_just_pressed("ui_down"):
#direction = Vector2(0, 1) # Move down
func explode():
if exploding: return
exploding = true
EventBus.enemy_hit.emit(5)
speed = 0
$ImpactCRT.play()
$AnimationPlayer.play("explode")
#set_deferred("monitoring", false)
await $AnimationPlayer.animation_finished
queue_free()
EventBus.enemy_died.emit()
func block():
if blocking: return
blocking = true
stunned = true
await get_tree().create_timer(5).timeout
shader_active = true
crt.material.set_shader_parameter("toggle", 1.0)
await get_tree().create_timer(1).timeout
shader_active = false
crt.material.set_shader_parameter("toggle", 0.0)
stunned = false

View file

@ -2,8 +2,14 @@
[ext_resource type="Script" uid="uid://7ls7phfcupal" path="res://scenes/enemy_crt.gd" id="1_ugdur"]
[ext_resource type="Texture2D" uid="uid://b5pswf7r8b7j4" path="res://sprites/crt.png" id="2_emiuq"]
[ext_resource type="Shader" uid="uid://dfywtah53il1m" path="res://shaders/player_hit.gdshader" id="2_gas3w"]
[ext_resource type="Texture2D" uid="uid://cy4jggxmnohbb" path="res://sprites/chicken.png" id="2_ugdur"]
[ext_resource type="Texture2D" uid="uid://bm7fgqwqfqmf4" path="res://sprites/explosion_pallete-swap.png" id="3_emiuq"]
[ext_resource type="AudioStream" uid="uid://cbi5q575w1g1n" path="res://sounds/CRT_IMPACT.wav" id="6_gas3w"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_gas3w"]
shader = ExtResource("2_gas3w")
shader_parameter/toggle = 0.0
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4gyqm"]
size = Vector2(32.727318, 27.272764)
@ -13,7 +19,7 @@ length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/path = NodePath("CRT:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
@ -25,7 +31,7 @@ tracks/0/keys = {
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:texture")
tracks/1/path = NodePath("CRT:texture")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
@ -37,7 +43,7 @@ tracks/1/keys = {
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:hframes")
tracks/2/path = NodePath("CRT:hframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
@ -49,7 +55,7 @@ tracks/2/keys = {
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/path = NodePath("CRT:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
@ -77,7 +83,7 @@ step = 0.2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:texture")
tracks/0/path = NodePath("CRT:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
@ -89,7 +95,7 @@ tracks/0/keys = {
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:frame")
tracks/1/path = NodePath("CRT:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
@ -101,7 +107,7 @@ tracks/1/keys = {
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:hframes")
tracks/2/path = NodePath("CRT:hframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
@ -113,7 +119,7 @@ tracks/2/keys = {
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/path = NodePath("CRT:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
@ -142,7 +148,7 @@ loop_mode = 2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/path = NodePath("CRT:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
@ -154,7 +160,7 @@ tracks/0/keys = {
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:texture")
tracks/1/path = NodePath("CRT:texture")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
@ -166,7 +172,7 @@ tracks/1/keys = {
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:hframes")
tracks/2/path = NodePath("CRT:hframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
@ -178,7 +184,7 @@ tracks/2/keys = {
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Sprite2D:region_rect")
tracks/3/path = NodePath("CRT:region_rect")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
@ -198,7 +204,9 @@ _data = {
[node name="EnemyCRT" type="Area2D" unique_id=1433837580 groups=["enemies"]]
script = ExtResource("1_ugdur")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2115910138]
[node name="CRT" type="Sprite2D" parent="." unique_id=2115910138]
material = SubResource("ShaderMaterial_gas3w")
position = Vector2(0, -8)
texture = ExtResource("2_emiuq")
hframes = 3
region_enabled = true
@ -213,13 +221,17 @@ shape = SubResource("RectangleShape2D_4gyqm")
one_shot = true
[node name="ShootTimer" type="Timer" parent="." unique_id=1985644907]
wait_time = 0.35
one_shot = true
[node name="DirectionTimer" type="Timer" parent="." unique_id=2080229505]
wait_time = 0.25
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=702523492]
libraries/ = SubResource("AnimationLibrary_7ellt")
[node name="DirectionTimer" type="Timer" parent="." unique_id=2080229505]
wait_time = 5.0
[node name="ImpactCRT" type="AudioStreamPlayer2D" parent="." unique_id=518408763]
stream = ExtResource("6_gas3w")
[connection signal="timeout" from="MoveTimer" to="." method="_on_timer_timeout"]
[connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"]

View file

@ -123,12 +123,11 @@ process_material = SubResource("ParticleProcessMaterial_b26j0")
[node name="Head" type="Sprite2D" parent="Ship" unique_id=522385006]
z_index = -1
position = Vector2(1, -17)
position = Vector2(2, -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")

BIN
sounds/CRT_IMPACT.wav Normal file

Binary file not shown.

View file

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