Skip to content

Commit ccfb539

Browse files
author
Chris Bradfield
committed
Space Rocks - Part 11
1 parent b9ca312 commit ccfb539

File tree

9 files changed

+158
-13
lines changed

9 files changed

+158
-13
lines changed
Binary file not shown.
Binary file not shown.

Space_Rocks_tutorial/working/scenes/enemy.tscn

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
[gd_scene load_steps=6 format=1]
1+
[gd_scene load_steps=8 format=1]
22

33
[ext_resource path="res://scripts/enemy.gd" type="Script" id=1]
44
[ext_resource path="res://art/sheet.ufoGreen.atex" type="Texture" id=2]
55
[ext_resource path="res://scenes/enemy_paths.tscn" type="PackedScene" id=3]
6+
[ext_resource path="res://audio/enemy_laser.wav" type="Sample" id=4]
67

78
[sub_resource type="CircleShape2D" id=1]
89

@@ -26,8 +27,18 @@ tracks/0/keys = {
2627
"values": [ 0.0, 180.0, 360.0 ]
2728
}
2829

30+
[sub_resource type="SampleLibrary" id=3]
31+
32+
samples/enemy_laser = {
33+
"db": -3.0,
34+
"pitch": 1.0,
35+
"priority": 0,
36+
"sample": ExtResource( 4 )
37+
}
38+
2939
[node name="enemy" type="Area2D"]
3040

41+
transform/pos = Vector2( -47.6131, -51.6943 )
3142
input/pickable = true
3243
shapes/0/shape = SubResource( 1 )
3344
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
@@ -37,10 +48,13 @@ gravity = 98.0
3748
linear_damp = 0.1
3849
angular_damp = 1.0
3950
script/script = ExtResource( 1 )
51+
__meta__ = {
52+
"_edit_group_": true
53+
}
4054

4155
[node name="sprite" type="Sprite" parent="."]
4256

43-
transform/rot = 56.4122
57+
transform/rot = 89.4901
4458
transform/scale = Vector2( 0.8, 0.8 )
4559
texture = ExtResource( 2 )
4660

@@ -64,10 +78,32 @@ autoplay = "rotate"
6478

6579
[node name="enemy_paths" parent="." instance=ExtResource( 3 )]
6680

67-
[node name="visible" type="VisibilityNotifier2D" parent="."]
68-
69-
rect = Rect2( -10, -10, 20, 20 )
70-
71-
[connection signal="exit_screen" from="visible" to="." method="_on_visible_exit_screen"]
81+
[node name="bullet_container" type="Node" parent="."]
82+
83+
[node name="shoot_timer" type="Timer" parent="."]
84+
85+
process_mode = 1
86+
wait_time = 1.0
87+
one_shot = false
88+
autostart = false
89+
90+
[node name="sounds" type="SamplePlayer" parent="."]
91+
92+
config/polyphony = 1
93+
config/samples = SubResource( 3 )
94+
default/volume_db = 0.0
95+
default/pitch_scale = 1.0
96+
default/pan = 0.0
97+
default/depth = 0.0
98+
default/height = 0.0
99+
default/filter/type = 0
100+
default/filter/cutoff = 5000.0
101+
default/filter/resonance = 1.0
102+
default/filter/gain = 1.0
103+
default/reverb_room = 2
104+
default/reverb_send = 0.0
105+
default/chorus_send = 0.0
106+
107+
[connection signal="timeout" from="shoot_timer" to="." method="_on_shoot_timer_timeout"]
72108

73109

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
[gd_scene load_steps=4 format=1]
2+
3+
[ext_resource path="res://scripts/enemy_bullet.gd" type="Script" id=1]
4+
[ext_resource path="res://art/beams.png" type="Texture" id=2]
5+
6+
[sub_resource type="CapsuleShape2D" id=1]
7+
8+
custom_solver_bias = 0.0
9+
radius = 5.02902
10+
height = 42.6393
11+
12+
[node name="enemy_bullet" type="Area2D"]
13+
14+
transform/pos = Vector2( 511.316, 242.307 )
15+
input/pickable = true
16+
shapes/0/shape = SubResource( 1 )
17+
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
18+
shapes/0/trigger = false
19+
gravity_vec = Vector2( 0, 1 )
20+
gravity = 98.0
21+
linear_damp = 0.1
22+
angular_damp = 1.0
23+
script/script = ExtResource( 1 )
24+
__meta__ = {
25+
"_edit_group_": true
26+
}
27+
speed = 700
28+
29+
[node name="bullet" type="Sprite" parent="."]
30+
31+
texture = ExtResource( 2 )
32+
region = true
33+
region_rect = Rect2( 8.125, 293.609, 62, 98.5296 )
34+
35+
[node name="collision" type="CollisionShape2D" parent="."]
36+
37+
visibility/visible = false
38+
shape = SubResource( 1 )
39+
trigger = false
40+
_update_shape_index = 0
41+
42+
[node name="visible" type="VisibilityNotifier2D" parent="."]
43+
44+
rect = Rect2( -10, -10, 20, 20 )
45+
46+
[connection signal="exit_screen" from="visible" to="." method="_on_visible_exit_screen"]
47+
48+

Space_Rocks_tutorial/working/scenes/main.tscn

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,15 @@ wait_time = 3.0
118118
one_shot = true
119119
autostart = false
120120

121+
[node name="enemy_timer" type="Timer" parent="."]
122+
123+
process_mode = 1
124+
wait_time = 3.0
125+
one_shot = true
126+
autostart = false
127+
121128
[connection signal="timeout" from="restart_timer" to="." method="_on_restart_timer_timeout"]
122129

130+
[connection signal="timeout" from="enemy_timer" to="." method="_on_enemy_timer_timeout"]
131+
123132

Space_Rocks_tutorial/working/scenes/player.tscn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ texture = ExtResource( 6 )
112112
transform/pos = Vector2( 0, 35 )
113113
frames = SubResource( 3 )
114114
animation = "default"
115-
frame = 2
116115
playing = true
117116

118117
[connection signal="body_enter" from="." to="." method="_on_player_body_enter"]
Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
extends Area2D
22

3+
var bullet = preload("res://scenes/enemy_bullet.tscn")
4+
35
onready var paths = get_node("enemy_paths")
6+
onready var bullet_container = get_node("bullet_container")
7+
onready var shoot_timer = get_node("shoot_timer")
8+
onready var sounds = get_node("sounds")
49

510
var path
611
var follow
712
var remote
8-
var speed = 250
13+
var speed = 150
14+
var target = null
915

1016
func _ready():
1117
set_process(true)
@@ -16,10 +22,29 @@ func _ready():
1622
follow.set_loop(false)
1723
remote = Node2D.new()
1824
follow.add_child(remote)
25+
shoot_timer.set_wait_time(1.5) # vary by level
26+
shoot_timer.start()
1927

2028
func _process(delta):
2129
follow.set_offset(follow.get_offset() + speed * delta)
2230
set_pos(remote.get_global_pos())
31+
if follow.get_unit_offset() > 1:
32+
queue_free()
33+
34+
func shoot1():
35+
sounds.play("enemy_laser")
36+
var dir = get_global_pos() - target.get_global_pos()
37+
var b = bullet.instance()
38+
bullet_container.add_child(b)
39+
b.start_at(dir.angle(), get_global_pos())
40+
41+
func shoot3():
42+
var dir = get_global_pos() - target.get_global_pos()
43+
for a in [-0.2, 0, 0.2]:
44+
sounds.play("enemy_laser")
45+
var b = bullet.instance()
46+
bullet_container.add_child(b)
47+
b.start_at(dir.angle() + a, get_global_pos())
2348

24-
func _on_visible_exit_screen():
25-
queue_free()
49+
func _on_shoot_timer_timeout():
50+
shoot3()
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
extends Area2D
2+
3+
var vel = Vector2()
4+
export var speed = 800
5+
6+
func _ready():
7+
set_fixed_process(true)
8+
9+
func start_at(dir, pos):
10+
set_rot(dir)
11+
set_pos(pos)
12+
vel = Vector2(speed, 0).rotated(dir + PI/2)
13+
14+
func _fixed_process(delta):
15+
set_pos(get_pos() + vel * delta)
16+
17+
func _on_visible_exit_screen():
18+
queue_free()

Space_Rocks_tutorial/working/scripts/main.gd

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ extends Node
22

33
var asteroid = preload("res://scenes/asteroid.tscn")
44
var explosion = preload("res://scenes/explosion.tscn")
5+
var enemy = preload("res://scenes/enemy.tscn")
56
onready var spawns = get_node("spawn_locations")
67
onready var asteroid_container = get_node("asteroid_container")
78
onready var expl_sounds = get_node("expl_sounds")
89
onready var HUD = get_node("HUD")
910
onready var player = get_node("player")
11+
onready var enemy_timer = get_node("enemy_timer")
1012

1113
func _ready():
1214
set_process(true)
@@ -16,6 +18,9 @@ func _ready():
1618

1719
func begin_next_level():
1820
global.level += 1
21+
enemy_timer.stop()
22+
enemy_timer.set_wait_time(rand_range(2, 4))
23+
enemy_timer.start()
1924
HUD.show_message("Wave %s" % global.level)
2025
for i in range(global.level):
2126
spawn_asteroid("big", spawns.get_child(i).get_pos(),
@@ -57,7 +62,12 @@ func explode_player():
5762
HUD.show_message("Game Over")
5863
get_node("restart_timer").start()
5964

60-
61-
6265
func _on_restart_timer_timeout():
6366
global.new_game()
67+
68+
func _on_enemy_timer_timeout():
69+
var e = enemy.instance()
70+
add_child(e)
71+
e.target = player
72+
enemy_timer.set_wait_time(rand_range(20, 40))
73+
enemy_timer.start()

0 commit comments

Comments
 (0)