Updated goose_talk to allow for interruptions (unfinished); improved
chicken animation, reduced scale in-engine.
This commit is contained in:
parent
462b0fc4b0
commit
2a7e1a2b6c
16 changed files with 221 additions and 254 deletions
|
|
@ -134,7 +134,7 @@ _data = {
|
||||||
&"explode": SubResource("Animation_epg4t")
|
&"explode": SubResource("Animation_epg4t")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="EnemyTest" type="Area2D" unique_id=1433837580 groups=["enemies"]]
|
[node name="Enemy" type="Area2D" unique_id=1433837580 groups=["enemies"]]
|
||||||
script = ExtResource("1_4gyqm")
|
script = ExtResource("1_4gyqm")
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2115910138]
|
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2115910138]
|
||||||
|
|
|
||||||
57
scenes/enemy_chicken.gd
Normal file
57
scenes/enemy_chicken.gd
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
extends Area2D
|
||||||
|
|
||||||
|
var bullet_scene = preload("res://scenes/enemy_bullet.tscn")
|
||||||
|
var start_pos = Vector2.ZERO
|
||||||
|
var speed = 0
|
||||||
|
var tween_speed: float = 1.4
|
||||||
|
|
||||||
|
var exploding = false
|
||||||
|
|
||||||
|
var enemy_move_aggression = randf_range(5, 20)
|
||||||
|
var enemy_shoot_aggression = randf_range(4, 20)
|
||||||
|
|
||||||
|
@onready var screensize = get_viewport_rect().size
|
||||||
|
|
||||||
|
|
||||||
|
func start(pos):
|
||||||
|
speed = 0
|
||||||
|
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)
|
||||||
|
tween.tween_property(self, "position:y", start_pos.y, tween_speed)
|
||||||
|
await tween.finished
|
||||||
|
$MoveTimer.wait_time = enemy_move_aggression
|
||||||
|
$MoveTimer.start()
|
||||||
|
$ShootTimer.wait_time = enemy_shoot_aggression
|
||||||
|
$ShootTimer.start()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_timer_timeout() -> void:
|
||||||
|
speed = randf_range(75, 100)
|
||||||
|
|
||||||
|
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()
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
position.y += speed * delta
|
||||||
|
if position.y > screensize.y + 32:
|
||||||
|
start(start_pos)
|
||||||
|
|
||||||
|
|
||||||
|
func explode():
|
||||||
|
if exploding: return
|
||||||
|
exploding = true
|
||||||
|
print_debug("Enemy explode!")
|
||||||
|
EventBus.enemy_hit.emit(5)
|
||||||
|
speed = 0
|
||||||
|
#$AnimationPlayer.play("explode")
|
||||||
|
#set_deferred("monitoring", false)
|
||||||
|
#await $AnimationPlayer.animation_finished
|
||||||
|
queue_free()
|
||||||
|
EventBus.enemy_died.emit()
|
||||||
|
|
||||||
1
scenes/enemy_chicken.gd.uid
Normal file
1
scenes/enemy_chicken.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://i0r17jo6838m
|
||||||
72
scenes/enemy_chicken.tscn
Normal file
72
scenes/enemy_chicken.tscn
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
[gd_scene format=3 uid="uid://drwm27rxxpq3t"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://i0r17jo6838m" path="res://scenes/enemy_chicken.gd" id="1_s7c3p"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cy4jggxmnohbb" path="res://sprites/chicken.png" id="2_h1rgn"]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4gyqm"]
|
||||||
|
size = Vector2(21, 23)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_h1rgn"]
|
||||||
|
length = 0.001
|
||||||
|
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),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_s7c3p"]
|
||||||
|
resource_name = "flap"
|
||||||
|
length = 0.4
|
||||||
|
loop_mode = 2
|
||||||
|
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.0009999999, 0.2, 0.4),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0, 1, 2]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_7ellt"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_h1rgn"),
|
||||||
|
&"flap": SubResource("Animation_s7c3p")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="EnemyChicken" type="Area2D" unique_id=1433837580 groups=["enemies"]]
|
||||||
|
scale = Vector2(0.7, 0.7)
|
||||||
|
script = ExtResource("1_s7c3p")
|
||||||
|
|
||||||
|
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2115910138]
|
||||||
|
texture = ExtResource("2_h1rgn")
|
||||||
|
hframes = 3
|
||||||
|
region_enabled = true
|
||||||
|
region_rect = Rect2(0, 0, 84, 32)
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1841693239]
|
||||||
|
scale = Vector2(1.5384617, 1.5384617)
|
||||||
|
shape = SubResource("RectangleShape2D_4gyqm")
|
||||||
|
|
||||||
|
[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="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=702523492]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_7ellt")
|
||||||
|
autoplay = &"flap"
|
||||||
|
|
||||||
|
[connection signal="timeout" from="MoveTimer" to="." method="_on_timer_timeout"]
|
||||||
|
[connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"]
|
||||||
|
|
@ -1,225 +0,0 @@
|
||||||
[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"]
|
|
||||||
|
|
@ -1,22 +1,45 @@
|
||||||
extends Area2D
|
extends Area2D
|
||||||
|
|
||||||
|
var goose_talking: bool = false
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
EventBus.goose_talk.connect(_on_goose_talk)
|
EventBus.goose_talk.connect(_on_goose_talk)
|
||||||
|
|
||||||
|
|
||||||
func _on_goose_talk(frame_index: int):
|
func _on_goose_talk(frame_index: int):
|
||||||
print("QUACK")
|
|
||||||
self.show()
|
|
||||||
$DapperGoose/Bubble.set_frame(frame_index)
|
|
||||||
var tween = create_tween()
|
|
||||||
tween.tween_property(self, "position:x", position.x - 50, .5).set_ease(tween.EASE_OUT)
|
|
||||||
await tween.finished
|
|
||||||
$DapperGoose/Bubble.show()
|
|
||||||
await get_tree().create_timer(3).timeout
|
|
||||||
$DapperGoose/Bubble.hide()
|
|
||||||
|
|
||||||
tween = create_tween()
|
#var quacking = get_tree().create_timer(3).timeout
|
||||||
tween.tween_property(self, "position:x", position.x + 50, .5).set_ease(tween.EASE_IN)
|
|
||||||
await tween.finished
|
if goose_talking == false:
|
||||||
self.hide()
|
print("QUACK")
|
||||||
|
#goose_talking = true
|
||||||
|
self.show()
|
||||||
|
$DapperGoose/Bubble.set_frame(frame_index)
|
||||||
|
var tween = create_tween()
|
||||||
|
tween.tween_property(self, "position:x", position.x - 50, .5).set_ease(tween.EASE_OUT)
|
||||||
|
await tween.finished
|
||||||
|
$DapperGoose/Bubble.show()
|
||||||
|
$DapperGoose/Quacking.start()
|
||||||
|
await $DapperGoose/Quacking.timeout
|
||||||
|
$DapperGoose/Bubble.hide()
|
||||||
|
goose_talking = false
|
||||||
|
tween = create_tween()
|
||||||
|
tween.tween_property(self, "position:x", position.x + 50, .5).set_ease(tween.EASE_IN)
|
||||||
|
await tween.finished
|
||||||
|
self.hide()
|
||||||
|
|
||||||
|
if goose_talking == true:
|
||||||
|
print("I'm interrupting")
|
||||||
|
$DapperGoose/Quacking.stop()
|
||||||
|
$DapperGosse/Bubble.set_frame(frame_index)
|
||||||
|
$DapperGoose/Quacking.start()
|
||||||
|
await $DapperGoose/Quacking.timeout
|
||||||
|
$DapperGoose/Bubble.hide()
|
||||||
|
goose_talking = false
|
||||||
|
tween = create_tween()
|
||||||
|
tween.tween_property(self, "position:x", position.x + 50, .5).set_ease(tween.EASE_IN)
|
||||||
|
await tween.finished
|
||||||
|
self.hide()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,10 @@ texture = ExtResource("1_wo8sg")
|
||||||
[node name="Bubble" type="Sprite2D" parent="DapperGoose" unique_id=2012258473]
|
[node name="Bubble" type="Sprite2D" parent="DapperGoose" unique_id=2012258473]
|
||||||
position = Vector2(-108, -21)
|
position = Vector2(-108, -21)
|
||||||
texture = ExtResource("3_g7ad0")
|
texture = ExtResource("3_g7ad0")
|
||||||
hframes = 3
|
hframes = 4
|
||||||
|
|
||||||
|
[node name="Quacking" type="Timer" parent="DapperGoose" unique_id=1836315393]
|
||||||
|
wait_time = 3.0
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1718121082]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1718121082]
|
||||||
position = Vector2(-18.5, 1)
|
position = Vector2(-18.5, 1)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
var enemy = preload("res://scenes/enemy.tscn")
|
|
||||||
var player = preload("res://scenes/player.tscn")
|
var player = preload("res://scenes/player.tscn")
|
||||||
var instance = null
|
var instance = null
|
||||||
var playing: bool = false
|
var playing: bool = false
|
||||||
|
|
@ -78,7 +77,7 @@ func _on_player_died():
|
||||||
# get_tree().call_group("enemies", "queue_free")
|
# get_tree().call_group("enemies", "queue_free")
|
||||||
# $Player.set_process(false)
|
# $Player.set_process(false)
|
||||||
# get_tree().call_group("enemies", "set_process", false)
|
# get_tree().call_group("enemies", "set_process", false)
|
||||||
enemy_win()
|
EventBus.goose_talk.emit(3)
|
||||||
instance.queue_free()
|
instance.queue_free()
|
||||||
game_over.show()
|
game_over.show()
|
||||||
await get_tree().create_timer(2).timeout
|
await get_tree().create_timer(2).timeout
|
||||||
|
|
@ -145,6 +144,3 @@ func win_game():
|
||||||
game_over.hide()
|
game_over.hide()
|
||||||
$CanvasLayer/Title.show()
|
$CanvasLayer/Title.show()
|
||||||
start_button.show()
|
start_button.show()
|
||||||
|
|
||||||
func enemy_win() -> void:
|
|
||||||
print("Enemy win!")
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ z_index = -100
|
||||||
self_modulate = Color(0.09185078, 0.09185078, 0.09185078, 1)
|
self_modulate = Color(0.09185078, 0.09185078, 0.09185078, 1)
|
||||||
z_index = 5
|
z_index = 5
|
||||||
scroll_scale = Vector2(-1, 1)
|
scroll_scale = Vector2(-1, 1)
|
||||||
scroll_offset = Vector2(-87, -1)
|
scroll_offset = Vector2(-88, -1)
|
||||||
repeat_size = Vector2(0, 64)
|
repeat_size = Vector2(0, 64)
|
||||||
autoscroll = Vector2(0, 12)
|
autoscroll = Vector2(0, 12)
|
||||||
repeat_times = 6
|
repeat_times = 6
|
||||||
|
|
@ -24,7 +24,7 @@ region_rect = Rect2(0, 0, 64, 64)
|
||||||
|
|
||||||
[node name="Sprite2D2" type="Sprite2D" parent="Foreground" unique_id=197485442]
|
[node name="Sprite2D2" type="Sprite2D" parent="Foreground" unique_id=197485442]
|
||||||
texture_repeat = 2
|
texture_repeat = 2
|
||||||
position = Vector2(293, 160)
|
position = Vector2(296, 160)
|
||||||
texture = ExtResource("1_b1x6b")
|
texture = ExtResource("1_b1x6b")
|
||||||
flip_h = true
|
flip_h = true
|
||||||
hframes = 4
|
hframes = 4
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@ extends Node2D
|
||||||
|
|
||||||
var wave_count: int = 0
|
var wave_count: int = 0
|
||||||
var enemy_count: int = 0
|
var enemy_count: int = 0
|
||||||
var enemy = preload("res://scenes/enemy.tscn")
|
var enemy = preload("res://scenes/enemy_chicken.tscn")
|
||||||
|
|
||||||
@export var wave_complete: bool = false
|
@export var wave_complete: bool = false
|
||||||
|
|
||||||
const COLS: int = 9
|
const COLS: int = 5
|
||||||
const ROWS: int = 3
|
const ROWS: int = 3
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
|
@ -19,7 +19,7 @@ func spawn_enemies():
|
||||||
for x in range(COLS):
|
for x in range(COLS):
|
||||||
for y in range(ROWS):
|
for y in range(ROWS):
|
||||||
var e = enemy.instantiate()
|
var e = enemy.instantiate()
|
||||||
var pos = Vector2(x * (16 + 8) + 24, 16 * 4 + y * 16)
|
var pos = Vector2(x * (28 + 4) + 56, 28 * 2 + y * 38)
|
||||||
add_child(e)
|
add_child(e)
|
||||||
e.start(pos)
|
e.start(pos)
|
||||||
enemy_count = ROWS * COLS
|
enemy_count = ROWS * COLS
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene format=3 uid="uid://drf1k1iulvy6f"]
|
[gd_scene format=3 uid="uid://drf1k1iulvy6f"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cqnotqarpsavn" path="res://wave.gd" id="1_y5ysc"]
|
[ext_resource type="Script" uid="uid://cqnotqarpsavn" path="res://scenes/wave.gd" id="1_y5ysc"]
|
||||||
|
|
||||||
[node name="Wave" type="Node2D" unique_id=2117861058]
|
[node name="Wave" type="Node2D" unique_id=2117861058]
|
||||||
script = ExtResource("1_y5ysc")
|
script = ExtResource("1_y5ysc")
|
||||||
|
|
|
||||||
BIN
sprites/Screen Recording 2026-02-14 at 00.23.06.mov
Normal file
BIN
sprites/Screen Recording 2026-02-14 at 00.23.06.mov
Normal file
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
BIN
sprites/chicken.png
Normal file
BIN
sprites/chicken.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1 KiB |
40
sprites/chicken.png.import
Normal file
40
sprites/chicken.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cy4jggxmnohbb"
|
||||||
|
path="res://.godot/imported/chicken.png-fad9cdcbe0face9d67d25185baea2fd4.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://sprites/chicken.png"
|
||||||
|
dest_files=["res://.godot/imported/chicken.png-fad9cdcbe0face9d67d25185baea2fd4.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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue