Skip to content

Commit 84825c7

Browse files
committed
feat: update
1 parent 568d767 commit 84825c7

File tree

670 files changed

+11419
-6
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

670 files changed

+11419
-6
lines changed

sc-space-shooter-pack/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/.import
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[gd_scene format=2]
2+
3+
[node name="Enemy" type="Node2D"]
4+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
[gd_scene load_steps=6 format=2]
2+
3+
[ext_resource path="res://screens/GameScreen.gd" type="Script" id=1]
4+
[ext_resource path="res://_exercices/Stars.tscn" type="PackedScene" id=2]
5+
[ext_resource path="res://actors/Player.tscn" type="PackedScene" id=3]
6+
[ext_resource path="res://actors/Spawner.tscn" type="PackedScene" id=4]
7+
[ext_resource path="res://actors/Rock.tscn" type="PackedScene" id=5]
8+
9+
[node name="GameScreen_2" type="Control"]
10+
anchor_right = 1.0
11+
anchor_bottom = 1.0
12+
script = ExtResource( 1 )
13+
14+
[node name="Stars" parent="." instance=ExtResource( 2 )]
15+
16+
[node name="Player" parent="." instance=ExtResource( 3 )]
17+
position = Vector2( 246.616, 772.186 )
18+
19+
[node name="Spawner" parent="." instance=ExtResource( 4 )]
20+
scene = ExtResource( 5 )
21+
22+
[node name="Bullets" type="Node2D" parent="."]
23+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
[gd_scene load_steps=6 format=2]
2+
3+
[sub_resource type="Gradient" id=2]
4+
colors = PoolColorArray( 1, 0.987253, 0.757813, 1, 1, 1, 1, 0 )
5+
6+
[sub_resource type="GradientTexture" id=3]
7+
gradient = SubResource( 2 )
8+
9+
[sub_resource type="Curve" id=4]
10+
_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ]
11+
12+
[sub_resource type="CurveTexture" id=5]
13+
curve = SubResource( 4 )
14+
15+
[sub_resource type="ParticlesMaterial" id=1]
16+
emission_shape = 2
17+
emission_box_extents = Vector3( 250, 425, 1 )
18+
flag_disable_z = true
19+
gravity = Vector3( 0, 0, 0 )
20+
angular_velocity = 0.0
21+
orbit_velocity = 0.0
22+
orbit_velocity_random = 0.0
23+
scale = 4.0
24+
scale_random = 1.0
25+
scale_curve = SubResource( 5 )
26+
color_ramp = SubResource( 3 )
27+
28+
[node name="Stars" type="Control"]
29+
anchor_right = 1.0
30+
anchor_bottom = 1.0
31+
32+
[node name="ColorRect" type="ColorRect" parent="."]
33+
anchor_right = 1.0
34+
anchor_bottom = 1.0
35+
color = Color( 0, 0, 0, 1 )
36+
37+
[node name="Particles2D" type="Particles2D" parent="."]
38+
position = Vector2( 244.015, 418.311 )
39+
process_material = SubResource( 1 )
40+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
extends Node2D
2+
3+
########
4+
# Bullet
5+
6+
export (Vector2) var velocity = Vector2()
7+
8+
onready var visibility_notifier = $VisibilityNotifier2D
9+
10+
###################
11+
# Lifecycle methods
12+
13+
func _ready():
14+
self.visibility_notifier.connect("screen_exited", self, "_on_screen_exited")
15+
16+
func _process(delta):
17+
self.position += self.velocity * delta
18+
19+
#################
20+
# Event callbacks
21+
22+
func _on_screen_exited():
23+
self.queue_free()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
[gd_scene load_steps=4 format=2]
2+
3+
[ext_resource path="res://actors/Bullet.gd" type="Script" id=1]
4+
[ext_resource path="res://assets/textures/Lasers/laserBlue14.png" type="Texture" id=2]
5+
6+
[sub_resource type="CapsuleShape2D" id=1]
7+
radius = 6.45503
8+
height = 44.7335
9+
10+
[node name="Bullet" type="Area2D" groups=[
11+
"Bullet",
12+
]]
13+
collision_layer = 8
14+
collision_mask = 6
15+
script = ExtResource( 1 )
16+
17+
[node name="Sprite" type="Sprite" parent="."]
18+
texture = ExtResource( 2 )
19+
20+
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
21+
shape = SubResource( 1 )
22+
23+
[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."]
24+
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
extends Node2D
2+
3+
##############
4+
# BulletSystem
5+
6+
signal fire(scene, pos, vel)
7+
8+
export (PackedScene) var bullet = null
9+
export (Vector2) var initial_velocity = Vector2(0, -500)
10+
export (float) var fire_delay = 0.1
11+
export (bool) var firing = false
12+
export (bool) var can_fire = true
13+
14+
onready var timer = $Timer
15+
16+
###################
17+
# Lifecycle methods
18+
19+
func _ready():
20+
self.timer.connect("timeout", self, "_on_timeout")
21+
self.timer.wait_time = self.fire_delay
22+
23+
func _process(delta):
24+
if self.firing:
25+
self.fire()
26+
27+
#################
28+
# Private methods
29+
30+
################
31+
# Public methods
32+
33+
func fire():
34+
if self.can_fire:
35+
var pos = self.global_position
36+
var vel = self.initial_velocity
37+
38+
self.emit_signal("fire", self.bullet, pos, vel)
39+
self.timer.start()
40+
self.firing = false
41+
self.can_fire = false
42+
43+
#################
44+
# Event callbackss
45+
46+
func _on_timeout():
47+
self.can_fire = true
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[gd_scene load_steps=2 format=2]
2+
3+
[ext_resource path="res://actors/BulletSystem.gd" type="Script" id=1]
4+
5+
[node name="BulletSystem" type="Node2D"]
6+
script = ExtResource( 1 )
7+
8+
[node name="Timer" type="Timer" parent="."]
9+
one_shot = true
10+
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
extends Area2D
2+
3+
########
4+
# Player
5+
6+
signal dead
7+
8+
const DAMP_FACTOR = 0.9
9+
const MOVE_SPEED = Vector2(500, 500)
10+
11+
var velocity = Vector2()
12+
var is_dead = false
13+
14+
var initial_position = Vector2()
15+
16+
onready var collision_shape = $CollisionShape2D
17+
onready var animation_player = $AnimationPlayer
18+
onready var explosion = $Explosion
19+
onready var bullet_system = $BulletSystem
20+
onready var death_timer = $DeathTimer
21+
22+
###################
23+
# Lifecycle methods
24+
25+
func _ready():
26+
# Connect the "area_entered" signal from Area2D to "_on_area_entered" method.
27+
self.connect("area_entered", self, "_on_area_entered")
28+
self.death_timer.connect("timeout", self, "_on_death_timeout")
29+
30+
self.initial_position = self.position
31+
32+
func _process(delta):
33+
# Do not process if dead
34+
if self.is_dead:
35+
return
36+
37+
# Get movement
38+
var movement = self._handle_movement()
39+
if movement == Vector2():
40+
# Damp velocity if idle
41+
self.velocity *= DAMP_FACTOR
42+
else:
43+
# Update velocity
44+
self.velocity = movement * MOVE_SPEED
45+
46+
# Fire
47+
self._handle_fire()
48+
49+
# Update position
50+
self.position += self.velocity * delta
51+
# Make sure you are still on screen
52+
self._clamp_position()
53+
54+
################
55+
# Public methods
56+
57+
func explode():
58+
"""Explode."""
59+
# Do not explode if dead
60+
if self.is_dead:
61+
return
62+
63+
# Reset velocity
64+
self.velocity = Vector2()
65+
self.bullet_system.firing = false
66+
self.is_dead = true
67+
68+
self.explosion.play()
69+
self.animation_player.play("explode")
70+
self.collision_shape.set_deferred("disabled", true)
71+
self.emit_signal("dead")
72+
73+
self.death_timer.start()
74+
75+
#################
76+
# Private methods
77+
78+
func _handle_movement():
79+
"""Compute movement."""
80+
var movement = Vector2()
81+
if Input.is_action_pressed("ui_left"):
82+
movement.x -= 1
83+
if Input.is_action_pressed("ui_right"):
84+
movement.x += 1
85+
if Input.is_action_pressed("ui_up"):
86+
movement.y -= 1
87+
if Input.is_action_pressed("ui_down"):
88+
movement.y += 1
89+
90+
return movement
91+
92+
func _handle_fire():
93+
"""Handle fire."""
94+
if Input.is_action_pressed("ui_accept"):
95+
self.bullet_system.firing = true
96+
else:
97+
self.bullet_system.firing = false
98+
99+
func _clamp_position():
100+
"""Clamp position."""
101+
var game_size = self.get_viewport().size
102+
103+
self.position.x = clamp(self.position.x, 0, game_size.x)
104+
self.position.y = clamp(self.position.y, 0, game_size.y)
105+
106+
#################
107+
# Event callbacks
108+
109+
func _on_area_entered(area):
110+
if area.is_in_group("Rock"):
111+
area.explode()
112+
self.explode()
113+
elif area.is_in_group("Enemy"):
114+
self.explode()
115+
116+
func _on_death_timeout():
117+
self.position = self.initial_position
118+
self.is_dead = false
119+
self.collision_shape.set_deferred("disabled", false)
120+
121+
self.animation_player.play("idle")
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
[gd_scene load_steps=9 format=2]
2+
3+
[ext_resource path="res://actors/Player.gd" type="Script" id=1]
4+
[ext_resource path="res://assets/textures/playerShip1_blue.png" type="Texture" id=2]
5+
[ext_resource path="res://fx/Explosion.tscn" type="PackedScene" id=3]
6+
[ext_resource path="res://actors/BulletSystem.tscn" type="PackedScene" id=4]
7+
[ext_resource path="res://actors/Bullet.tscn" type="PackedScene" id=5]
8+
9+
[sub_resource type="CapsuleShape2D" id=1]
10+
radius = 10.4331
11+
height = 55.1725
12+
13+
[sub_resource type="Animation" id=2]
14+
resource_name = "explode"
15+
length = 0.3
16+
tracks/0/type = "value"
17+
tracks/0/path = NodePath("Sprite:modulate")
18+
tracks/0/interp = 1
19+
tracks/0/loop_wrap = true
20+
tracks/0/imported = false
21+
tracks/0/enabled = true
22+
tracks/0/keys = {
23+
"times": PoolRealArray( 0, 0.3 ),
24+
"transitions": PoolRealArray( 1, 1 ),
25+
"update": 0,
26+
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
27+
}
28+
29+
[sub_resource type="Animation" id=3]
30+
tracks/0/type = "value"
31+
tracks/0/path = NodePath("Sprite:modulate")
32+
tracks/0/interp = 1
33+
tracks/0/loop_wrap = true
34+
tracks/0/imported = false
35+
tracks/0/enabled = true
36+
tracks/0/keys = {
37+
"times": PoolRealArray( 0 ),
38+
"transitions": PoolRealArray( 1 ),
39+
"update": 0,
40+
"values": [ Color( 1, 1, 1, 1 ) ]
41+
}
42+
43+
[node name="Player" type="Area2D" groups=[
44+
"Player",
45+
]]
46+
collision_mask = 14
47+
script = ExtResource( 1 )
48+
49+
[node name="Sprite" type="Sprite" parent="."]
50+
texture = ExtResource( 2 )
51+
52+
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
53+
shape = SubResource( 1 )
54+
55+
[node name="Explosion" parent="." instance=ExtResource( 3 )]
56+
57+
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
58+
autoplay = "idle"
59+
anims/explode = SubResource( 2 )
60+
anims/idle = SubResource( 3 )
61+
62+
[node name="BulletSystem" parent="." instance=ExtResource( 4 )]
63+
position = Vector2( -0.754711, -37.3581 )
64+
bullet = ExtResource( 5 )
65+
initial_velocity = Vector2( 0, -750 )
66+
fire_delay = 0.25
67+
68+
[node name="DeathTimer" type="Timer" parent="."]
69+
wait_time = 2.0
70+
one_shot = true
71+

0 commit comments

Comments
 (0)