Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Flossy Gnu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Purism
Flossy Gnu
Commits
1bd4ae72
Commit
1bd4ae72
authored
Mar 25, 2019
by
Nathan Lovato
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace arcade scoreboard with a mobile-friendly design, add flossy dance
parent
204923d0
Pipeline
#5224
passed with stage
in 13 minutes and 56 seconds
Changes
18
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
411 additions
and
645 deletions
+411
-645
game/Game.gd
game/Game.gd
+19
-10
game/Game.tscn
game/Game.tscn
+7
-28
game/Gnu/Gnu.gd
game/Gnu/Gnu.gd
+26
-11
game/Gnu/Gnu.tscn
game/Gnu/Gnu.tscn
+7
-56
game/Gnu/GnuSkeleton.gd
game/Gnu/GnuSkeleton.gd
+10
-0
game/Gnu/GnuSkeleton.tscn
game/Gnu/GnuSkeleton.tscn
+36
-64
game/Pillar/Pillar.tscn
game/Pillar/Pillar.tscn
+47
-9
game/Score/ScoreLabel.gd
game/Score/ScoreLabel.gd
+8
-2
game/Score/ScoreLabel.tscn
game/Score/ScoreLabel.tscn
+198
-0
game/Score/ScoreLoader.gd
game/Score/ScoreLoader.gd
+41
-0
game/ScoreBoard/ScoreBoard.gd
game/ScoreBoard/ScoreBoard.gd
+0
-21
game/ScoreBoard/ScoreBoard.tscn
game/ScoreBoard/ScoreBoard.tscn
+0
-157
game/ScoreBoard/ScoreLoader.gd
game/ScoreBoard/ScoreLoader.gd
+0
-73
game/ScoreBoard/ScoreRow.gd
game/ScoreBoard/ScoreRow.gd
+0
-23
game/ScoreBoard/ScoreRow.tscn
game/ScoreBoard/ScoreRow.tscn
+0
-164
game/ScoreLabel/ScoreLabel.tscn
game/ScoreLabel/ScoreLabel.tscn
+0
-22
game/assets/fonts/ScoreRow.tres
game/assets/fonts/ScoreRow.tres
+3
-0
game/project.godot
game/project.godot
+9
-5
No files found.
game/Game.gd
View file @
1bd4ae72
...
...
@@ -7,7 +7,7 @@ onready var foreground = $Foreground
onready
var
gnu
=
$
Gnu
onready
var
score_board
=
$
UI
/
ScoreBoard
const
ScoreLoader
=
preload
(
"res://Score
Board/ScoreLoader
.gd"
)
const
ScoreLoader
=
preload
(
"res://Score
/ScoreLoaderMobile
.gd"
)
var
waiting_to_restart
=
false
...
...
@@ -26,17 +26,26 @@ func _unhandled_input(event):
func
_on_Gnu_died
():
"""Play fade out animations, update the score, and show the scoreboard"""
yield
(
_fade_gameplay_assets
(),
"completed"
)
_show_high_score
()
waiting_to_restart
=
true
func
_fade_gameplay_assets
():
foreground
.
fade_out
()
yield
(
get_tree
()
.
create_timer
(
0.3
),
"timeout"
)
# Can't use an AnimationPlayer because the pillars are toplevel nodes
get_tree
()
.
call_group
(
'
pillar'
,
'
fade_out'
)
# We need to fade the pillars individually because they are toplevel nodes
# They don"t inherit the modulate color from anything
get_tree
()
.
call_group
(
"pillar"
,
"fade_out"
)
yield
(
get_tree
()
.
create_timer
(
0.3
),
"timeout"
)
score_label
.
fade_out
()
yield
(
get_tree
()
.
create_timer
(
0.6
),
"timeout"
)
func
_show_high_score
():
var
loader
=
ScoreLoader
.
new
()
loader
.
register
(
score_label
.
score
)
var
scores
=
loader
.
get_scores
()
score_board
.
start
(
scores
)
waiting_to_restart
=
true
var
high_score
=
loader
.
register
(
score_label
.
score
)
if
high_score
==
score_label
.
score
:
score_label
.
show_best_label
()
gnu
.
dance
()
gnu
.
global_position
=
score_label
.
gnu_spawn_position
gnu
.
appear
()
score_label
.
fade_to_opaque
()
game/Game.tscn
View file @
1bd4ae72
[gd_scene load_steps=1
8
format=2]
[gd_scene load_steps=1
7
format=2]
[ext_resource path="res://Game.gd" type="Script" id=1]
[ext_resource path="res://assets/bg.png" type="Texture" id=2]
[ext_resource path="res://assets/particle_cloud_1.png" type="Texture" id=3]
[ext_resource path="res://Score
Label
/ScoreLabel.tscn" type="PackedScene" id=4]
[ext_resource path="res://Score/ScoreLabel.tscn" type="PackedScene" id=4]
[ext_resource path="res://Gnu/Gnu.tscn" type="PackedScene" id=5]
[ext_resource path="res://Foreground.gd" type="Script" id=6]
[ext_resource path="res://PillarSpawner/PillarSpawner.tscn" type="PackedScene" id=7]
[ext_resource path="res://SpriteSpawner/SpriteSpawner.gd" type="Script" id=8]
[ext_resource path="res://SpriteSpawner/GroundSprite.tscn" type="PackedScene" id=9]
[ext_resource path="res://SpriteSpawner/Fence.tscn" type="PackedScene" id=10]
[ext_resource path="res://ScoreBoard/ScoreBoard.tscn" type="PackedScene" id=11]
[sub_resource type="Gradient" id=1]
...
...
@@ -94,7 +94,7 @@ tracks/0/keys = {
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
}
[node name="Game" type="Node2D"]
[node name="Game" type="Node2D"
index="0"
]
script = ExtResource( 1 )
...
...
@@ -137,18 +137,6 @@ v_frames = 1
[node name="ScoreLabel" parent="Background" index="2" instance=ExtResource( 4 )]
anchor_left = 0.0
anchor_top = 0.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 2
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 4
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="Gnu" parent="." index="1" instance=ExtResource( 5 )]
position = Vector2( 190, 960 )
...
...
@@ -161,6 +149,7 @@ script = ExtResource( 6 )
[node name="PillarSpawner" parent="Foreground" index="0" instance=ExtResource( 7 )]
position = Vector2( 0, 950 )
_sections_unfolded = [ "Z Index" ]
[node name="GroundSpawner" type="Node2D" parent="Foreground" index="1"]
...
...
@@ -168,6 +157,7 @@ editor/display_folded = true
position = Vector2( -180, 1930 )
z_index = 100
script = ExtResource( 8 )
_sections_unfolded = [ "Z Index" ]
sprite_scene = ExtResource( 9 )
[node name="SpawnPosition" type="Position2D" parent="Foreground/GroundSpawner" index="0"]
...
...
@@ -177,6 +167,7 @@ sprite_scene = ExtResource( 9 )
position = Vector2( -180, 1700 )
z_index = 100
script = ExtResource( 8 )
_sections_unfolded = [ "Z Index" ]
sprite_scene = ExtResource( 10 )
[node name="SpawnPosition" type="Position2D" parent="Foreground/FenceSpawner" index="0"]
...
...
@@ -191,16 +182,4 @@ playback_speed = 1.0
anims/fade_out = SubResource( 6 )
blend_times = [ ]
[node name="UI" type="CanvasLayer" parent="." index="3"]
layer = 1
offset = Vector2( 0, 0 )
rotation = 0.0
scale = Vector2( 1, 1 )
transform = Transform2D( 1, 0, 0, 1, 0, 0 )
[node name="ScoreBoard" parent="UI" index="0" instance=ExtResource( 11 )]
visible = false
game/Gnu/Gnu.gd
View file @
1bd4ae72
...
...
@@ -4,8 +4,9 @@ signal died
onready
var
tween
=
$
Tween
onready
var
anim_player
=
$
AnimationPlayer
onready
var
sprite
=
$
Sprite
onready
var
gnu_skeleton
=
$
GnuSkeleton
onready
var
collision_shape
=
$
CollisionShape2D
onready
var
particles
=
$
PurpleMiasma
export
var
gravity
=
4000.0
export
var
flap_force
=
1200.0
...
...
@@ -47,8 +48,8 @@ func flap():
_target_angle
=
-
PI
/
5.0
if
not
tween
.
is_active
():
tween
.
interpolate_property
(
sprite
,
'
rotation'
,
sprite
.
rotation
,
_target_angle
,
0.12
,
gnu_skeleton
,
'
rotation'
,
gnu_skeleton
.
rotation
,
_target_angle
,
0.12
,
Tween
.
TRANS_CUBIC
,
Tween
.
EASE_OUT
)
tween
.
start
()
...
...
@@ -57,10 +58,10 @@ func _physics_process(delta):
_velocity
.
y
+=
gravity
*
delta
_velocity
.
y
=
min
(
_velocity
.
y
,
max_fall_speed
)
if
not
tween
.
is_active
()
and
sprite
.
rotation
<
PI
/
5.0
:
if
not
tween
.
is_active
()
and
gnu_skeleton
.
rotation
<
PI
/
5.0
:
_angular_velocity
+=
angular_acceleration
*
delta
_angular_velocity
=
min
(
_angular_velocity
,
max_angular_velocity
)
sprite
.
rotate
(
_angular_velocity
*
delta
)
gnu_skeleton
.
rotate
(
_angular_velocity
*
delta
)
var
motion
=
_velocity
*
delta
# Prevent the character from moving too high up
...
...
@@ -72,23 +73,37 @@ func _physics_process(delta):
func
die
():
set_physics_process
(
false
)
set_process_unhandled_input
(
false
)
self
.
_active
=
false
tween
.
interpolate_property
(
sprite
,
'
scale'
,
sprite
.
scale
,
Vector2
(),
0.4
,
gnu_skeleton
,
'
scale'
,
gnu_skeleton
.
scale
,
Vector2
(),
0.4
,
Tween
.
TRANS_QUAD
,
Tween
.
EASE_OUT
)
tween
.
start
()
yield
(
tween
,
"tween_completed"
)
self
.
_active
=
false
gnu_skeleton
.
rotation
=
0.0
emit_signal
(
'
died'
)
func
_set_active
(
value
):
_active
=
value
visible
=
value
set_physics_process
(
value
)
set_process_unhandled_input
(
value
)
particles
.
emitting
=
value
collision_shape
.
disabled
=
not
value
func
appear
():
tween
.
stop_all
()
tween
.
interpolate_property
(
gnu_skeleton
,
'
scale'
,
gnu_skeleton
.
scale
,
gnu_skeleton
.
start_scale
,
0.3
,
Tween
.
TRANS_QUAD
,
Tween
.
EASE_OUT
)
tween
.
start
()
func
dance
():
gnu_skeleton
.
dance
()
func
_on_Tween_tween_completed
(
object
,
key
):
tween
.
stop_all
()
game/Gnu/Gnu.tscn
View file @
1bd4ae72
...
...
@@ -3,7 +3,7 @@
[ext_resource path="res://Gnu/Gnu.gd" type="Script" id=1]
[ext_resource path="res://assets/particle_cloud_2.png" type="Texture" id=2]
[ext_resource path="res://Gnu/Camera2D.gd" type="Script" id=3]
[ext_resource path="res://
assets/gnu.png" type="Textur
e" id=4]
[ext_resource path="res://
Gnu/GnuSkeleton.tscn" type="PackedScen
e" id=4]
[sub_resource type="Gradient" id=1]
...
...
@@ -79,60 +79,12 @@ radius = 55.8274
length = 2.0
loop = true
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.8, 1.6 ),
"transitions": PoolRealArray( 0.435275, 0.965936, 1.36604 ),
"update": 0,
"values": [ Vector2( -66.5, 1 ), Vector2( -69.5, -30 ), Vector2( -68, 20 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:rotation_degrees")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0.5, 1.1, 1.7, 1.8, 1.9 ),
"transitions": PoolRealArray( 1, 1.23114, 1, 1, 1 ),
"update": 0,
"values": [ 4.3, -7.0, 1.92708, 2.88061, 2.73285 ]
}
[sub_resource type="Animation" id=8]
length = 0.001
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.001 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( -68.9759, -24.584 ), Vector2( -61.4759, -3.58407 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:rotation_degrees")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.001 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 4.10578, 0.0 ]
}
[node name="Gnu" type="KinematicBody2D"]
...
...
@@ -151,6 +103,7 @@ speed_horizontal = 280.0
[node name="PurpleMiasma" type="Particles2D" parent="." index="0"]
position = Vector2( -44.9996, 4.58978 )
z_index = -1
emitting = true
amount = 10
lifetime = 1.0
...
...
@@ -169,6 +122,7 @@ texture = ExtResource( 2 )
normal_map = null
h_frames = 1
v_frames = 1
_sections_unfolded = [ "Z Index" ]
[node name="Camera2D" type="Camera2D" parent="." index="1"]
...
...
@@ -197,14 +151,11 @@ editor_draw_limits = false
editor_draw_drag_margin = false
script = ExtResource( 3 )
[node name="
Sprite" type="Sprite" parent="." index="2"
]
[node name="
GnuSkeleton" parent="." index="2" instance=ExtResource( 4 )
]
editor/display_folded = true
position = Vector2( -66.5, 1 )
rotation = 0.0522559
scale = Vector2( 0.786026, 0.786026 )
texture = ExtResource( 4 )
offset = Vector2( 84.6028, -31.3285 )
position = Vector2( -36, 11.9999 )
scale = Vector2( 0.765628, 0.765628 )
_sections_unfolded = [ "Transform", "Visibility" ]
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="3"]
...
...
game/Gnu/GnuSkeleton.gd
0 → 100644
View file @
1bd4ae72
extends
Node2D
onready
var
anim_player
=
$
AnimationPlayer
var
start_scale
=
Vector2
()
func
_ready
():
start_scale
=
scale
func
dance
():
anim_player
.
play
(
"dance"
)
game/Gnu/GnuSkeleton.tscn
View file @
1bd4ae72
[gd_scene load_steps=1
3
format=2]
[gd_scene load_steps=1
4
format=2]
[ext_resource path="res://assets/gnu/body.png" type="Texture" id=1]
[ext_resource path="res://assets/gnu/tail.png" type="Texture" id=2]
[ext_resource path="res://assets/gnu/foot_back_rear.png" type="Texture" id=3]
[ext_resource path="res://assets/gnu/foot_back_front.png" type="Texture" id=4]
[ext_resource path="res://assets/gnu/foot_front.png" type="Texture" id=5]
[ext_resource path="res://assets/gnu/foot_rear.png" type="Texture" id=6]
[ext_resource path="res://assets/gnu/head_smile.png" type="Texture" id=7]
[ext_resource path="res://assets/gnu/ear_back.png" type="Texture" id=8]
[ext_resource path="res://assets/gnu/ear.png" type="Texture" id=9]
[ext_resource path="res://assets/gnu/head.png" type="Texture" id=10]
[ext_resource path="res://Gnu/GnuSkeleton.gd" type="Script" id=1]
[ext_resource path="res://assets/gnu/body.png" type="Texture" id=2]
[ext_resource path="res://assets/gnu/tail.png" type="Texture" id=3]
[ext_resource path="res://assets/gnu/foot_back_rear.png" type="Texture" id=4]
[ext_resource path="res://assets/gnu/foot_back_front.png" type="Texture" id=5]
[ext_resource path="res://assets/gnu/foot_front.png" type="Texture" id=6]
[ext_resource path="res://assets/gnu/foot_rear.png" type="Texture" id=7]
[ext_resource path="res://assets/gnu/head.png" type="Texture" id=8]
[ext_resource path="res://assets/gnu/ear_back.png" type="Texture" id=9]
[ext_resource path="res://assets/gnu/ear.png" type="Texture" id=10]
[ext_resource path="res://assets/gnu/head_smile.png" type="Texture" id=11]
[sub_resource type="Animation" id=1]
...
...
@@ -387,7 +388,7 @@ tracks/30/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ ExtResource(
10
) ]
"values": [ ExtResource(
8
) ]
}
tracks/31/type = "value"
tracks/31/path = NodePath("Pivot/body:z_index")
...
...
@@ -514,7 +515,7 @@ tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ ExtResource(
7
) ]
"values": [ ExtResource(
11
) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Pivot/body/tail:position")
...
...
@@ -864,32 +865,11 @@ tracks/29/keys = {
"update": 0,
"values": [ 0.0 ]
}
tracks/30/type = "value"
tracks/30/path = NodePath(".:position")
tracks/30/interp = 1
tracks/30/loop_wrap = true
tracks/30/imported = false
tracks/30/enabled = true
tracks/30/keys = {
"times": PoolRealArray( 1.5 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 0, 0 ) ]
}
tracks/31/type = "value"
tracks/31/path = NodePath(".:rotation_degrees")
tracks/31/interp = 1
tracks/31/loop_wrap = true
tracks/31/imported = false
tracks/31/enabled = true
tracks/31/keys = {
"times": PoolRealArray( 1.5 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
[node name="Node2D" type="Node2D"]
[node name="GnuSkeleton" type="Node2D"]
script = ExtResource( 1 )
_sections_unfolded = [ "Transform" ]
[node name="Pivot" type="Position2D" parent="." index="0"]
...
...
@@ -897,66 +877,59 @@ _sections_unfolded = [ "Visibility" ]
[node name="body" type="Sprite" parent="Pivot" index="0"]
position = Vector2( 2.27021, -0.74084 )
rotation = -1.27251
z_as_relative = false
texture = ExtResource(
1
)
texture = ExtResource(
2
)
offset = Vector2( 23.406, -19.1561 )
_sections_unfolded = [ "
Transform", "
Visibility", "Z Index" ]
_sections_unfolded = [ "Visibility", "Z Index" ]
[node name="tail" type="Sprite" parent="Pivot/body" index="0"]
show_behind_parent = true
position = Vector2( -40.5001, -14.0625 )
rotation = -0.0686197
position = Vector2( -39.7186, -12.6564 )
z_as_relative = false
texture = ExtResource(
2
)
texture = ExtResource(
3
)
offset = Vector2( -37.125, -2.81253 )
_sections_unfolded = [ "Transform", "Visibility", "Z Index" ]
[node name="foot_back_rear" type="Sprite" parent="Pivot/body" index="1"]
show_behind_parent = true
position = Vector2( -
23.6205, 28.5217
)
position = Vector2( -
7.09358, 26.1561
)
z_as_relative = false
texture = ExtResource(
3
)
texture = ExtResource(
4
)
offset = Vector2( -4.15627, 4.28125 )
_sections_unfolded = [ "Z Index" ]
[node name="foot_back_front" type="Sprite" parent="Pivot/body" index="2"]
show_behind_parent = true
position = Vector2( 21.8343, 42.3101 )
rotation = 0.916846
position = Vector2( 64.9065, 30.6561 )
z_as_relative = false
texture = ExtResource(
4
)
texture = ExtResource(
5
)
offset = Vector2( -5.2813, 3.15625 )
_sections_unfolded = [ "Z Index" ]
[node name="foot_front" type="Sprite" parent="Pivot/body" index="3"]
position = Vector2( 25.3957, 46.434 )
rotation = -0.47691
position = Vector2( 27.7814, 32.3436 )
z_as_relative = false
texture = ExtResource(
5
)
texture = ExtResource(
6
)
offset = Vector2( -4.71878, 5.40623 )
_sections_unfolded = [ "Z Index" ]
[node name="foot_rear" type="Sprite" parent="Pivot/body" index="4"]
position = Vector2( -
41.7361, -1.05226
)
position = Vector2( -
34.0936, 19.4061
)
z_as_relative = false
texture = ExtResource(
6
)
texture = ExtResource(
7
)
offset = Vector2( -5.2813, 4.28123 )
_sections_unfolded = [ "Z Index" ]
[node name="head" type="Sprite" parent="Pivot/body" index="5"]
position = Vector2( 72.2135, -17.6458 )
rotation = 1.20236
z_index = 1
position = Vector2( 68.844, -19.9689 )
z_as_relative = false
texture = ExtResource(
7
)
texture = ExtResource(
8
)
offset = Vector2( 19.4687, -26.0938 )
_sections_unfolded = [ "Offset", "Z Index" ]
...
...
@@ -964,25 +937,24 @@ _sections_unfolded = [ "Offset", "Z Index" ]
show_behind_parent = true
position = Vector2( 86.6251, -37.6875 )
z_index = 1
rotation = 0.00242953
z_as_relative = false
texture = ExtResource(
8
)
texture = ExtResource(
9
)
offset = Vector2( 49.8438, -2.46877 )
_sections_unfolded = [ "Z Index" ]
[node name="ear" type="Sprite" parent="Pivot/body/head" index="1"]
position = Vector2( -14.0625, -40.5 )
z_index = 1
z_as_relative = false
texture = ExtResource(
9
)
texture = ExtResource(
10
)
offset = Vector2( -50.2813, -3.03128 )
_sections_unfolded = [ "Z Index" ]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="1"]
root_node = NodePath("..")
autoplay = ""
autoplay = "
SETUP
"
playback_process_mode = 1
playback_default_blend_time = 0.0
playback_speed = 1.0
...
...
game/Pillar/Pillar.tscn
View file @
1bd4ae72
...
...
@@ -5,11 +5,16 @@
[ext_resource path="res://assets/pillar_bottom.png" type="Texture" id=3]
[sub_resource type="RectangleShape2D" id=1]
custom_solver_bias = 0.0
extents = Vector2( 20, 240 )
[sub_resource type="Animation" id=2]
resource_name = "fade_out"
length = 0.6
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:modulate")
tracks/0/interp = 1
...
...
@@ -26,41 +31,74 @@ tracks/0/keys = {
[node name="Pillar" type="StaticBody2D" groups=[
"pillar",
]]
input_pickable = false
collision_layer = 2
collision_mask = 0
constant_linear_velocity = Vector2( 0, 0 )
constant_angular_velocity = 0.0
friction = 1.0
bounce = 0.0
script = ExtResource( 1 )
__meta__ = {
"_edit_vertical_guides_": [ ]
}
[node name="PillarTop" type="Sprite" parent="."]
[node name="PillarTop" type="Sprite" parent="." index="0"]
position = Vector2( -10, -750 )
z_index =
5
z_index =
10
texture = ExtResource( 2 )
_sections_unfolded = [ "Z Index" ]
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="." index="1"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
position = Vector2( 0, 50 )
build_mode = 0
polygon = PoolVector2Array( -120, -240, 100, -240, 100, -1510, -120, -1510 )
[node name="PillarBottom" type="Sprite" parent="."]
[node name="PillarBottom" type="Sprite" parent="." index="2"]
position = Vector2( 0, 650 )
z_index = -10
texture = ExtResource( 3 )
_sections_unfolded = [ "Z Index" ]
[node name="CollisionPolygon2D2" type="CollisionPolygon2D" parent="." index="3"]
[node name="CollisionPolygon2D2" type="CollisionPolygon2D" parent="."]
position = Vector2( 0, 1226 )
build_mode = 0
polygon = PoolVector2Array( -120, -240, 100, -240, 100, -1060, -120, -1060 )
[node name="Checkpoint" type="Area2D" parent="."]
[node name="Checkpoint" type="Area2D" parent="." index="4"]
position = Vector2( 0, -20 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
collision_layer = 4
audio_bus_override = false
audio_bus_name = "Master"
[node name="CollisionShape2D" type="CollisionShape2D" parent="Checkpoint" index="0"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Checkpoint"]
shape = SubResource( 1 )
[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."]
[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="." index="5"]
position = Vector2( 140, 0 )
rect = Rect2( -20, -20, 40, 40 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="6"]
root_node = NodePath("..")
autoplay = ""
playback_process_mode = 1
playback_default_blend_time = 0.0
playback_speed = 1.0
anims/fade_out = SubResource( 2 )
blend_times = [ ]
game/Score
Label
/ScoreLabel.gd
→
game/Score/ScoreLabel.gd
View file @
1bd4ae72
extends
Label
onready
var
tween
=
$
Tween
onready
var
new_best_label
=
$
Pivot
/
NewBestLabel
onready
var
gnu_spawn_position
=
$
GnuPivot
.
global_position
const
WHITE_OPAQUE
=
Color
(
'
aaffffff'
)
const
WHITE_SEMI_TRANSPARENT
=
Color
(
'
44ffffff'
)
...
...
@@ -23,15 +25,19 @@ func set_score(value):
tween
.
start
()
func
fade_
out
():
func
fade_
to_opaque
():
tween
.
stop_all
()
tween
.
interpolate_property
(
self
,
'
modulate'
,
modulate
,
WHITE_
TRANSPARENT
,
0.6
,
modulate
,
WHITE_
OPAQUE
,
0.3
,
Tween
.
TRANS_QUAD
,
Tween
.
EASE_IN
)
tween
.
start
()
func
show_best_label
():
new_best_label
.
appear
()
func
_ready
():
modulate
=
WHITE_SEMI_TRANSPARENT
...
...
game/Score/ScoreLabel.tscn
0 → 100644
View file @
1bd4ae72
[gd_scene load_steps=8 format=2]
[ext_resource path="res://assets/fonts/Cabin-SemiBold.otf" type="DynamicFontData" id=1]
[ext_resource path="res://Score/ScoreLabel.gd" type="Script" id=2]
[ext_resource path="res://assets/fonts/ScoreRow.tres" type="DynamicFont" id=3]
[sub_resource type="DynamicFont" id=1]
size = 300
use_mipmaps = false
use_filter = true
font_data = ExtResource( 1 )
[sub_resource type="GDScript" id=2]
script/source = "extends Label
onready var anim_player = $AnimationPlayer
func appear():
anim_player.play(\"appear\")
"
[sub_resource type="Animation" id=3]
length = 0.01
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:rect_position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 0, 0 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=4]
length = 0.3
loop = false
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath(".:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.3 ),
"transitions": PoolRealArray( 0.415353, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:rect_position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.3 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( 0, 0 ), Vector2( 0, -59 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/3/type = "value"
tracks/3/path = NodePath(".:rect_rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0.3 ),
"transitions": PoolRealArray( 1 ),
"update": 0,