This commit is contained in:
ajuvercr 2020-04-08 12:40:43 +02:00
parent 02ebacf45d
commit 3b0fcda34b
8 changed files with 144 additions and 21 deletions

View file

@ -5,6 +5,9 @@ export (PackedScene) var Tower = preload("res://Tower.tscn");
onready var screen_size = Vector2(ProjectSettings.get("display/window/size/width"), ProjectSettings.get("display/window/size/height")) onready var screen_size = Vector2(ProjectSettings.get("display/window/size/width"), ProjectSettings.get("display/window/size/height"))
export var tower_density = 250 export var tower_density = 250
signal spawn
var last_built = 500 var last_built = 500
func build_tower(): func build_tower():
@ -15,13 +18,20 @@ func build_tower():
tower.position = pos tower.position = pos
emit_signal("spawn", tower.get_global_transform().get_origin().x)
add_child(tower) add_child(tower)
last_built += tower_density last_built += tower_density
func _ready(): func _ready():
var ui = get_node("UI")
var player = get_node("Player")
player.connect("start", ui, "_on_Player_start")
player.connect("hit", ui, "_on_Player_hit")
player.connect("passed", ui, "_on_Player_passed")
connect("spawn", player, "_on_Tower_spawn")
randomize() randomize()
print(screen_size)
while last_built < screen_size.x * 3: while last_built < screen_size.x * 3:
build_tower() build_tower()

View file

@ -1,8 +1,9 @@
[gd_scene load_steps=5 format=2] [gd_scene load_steps=6 format=2]
[ext_resource path="res://Camera2D.gd" type="Script" id=1] [ext_resource path="res://Camera2D.gd" type="Script" id=1]
[ext_resource path="res://Player.tscn" type="PackedScene" id=2] [ext_resource path="res://Player.tscn" type="PackedScene" id=2]
[ext_resource path="res://res/sprites.png" type="Texture" id=3] [ext_resource path="res://res/sprites.png" type="Texture" id=3]
[ext_resource path="res://UI.tscn" type="PackedScene" id=4]
[sub_resource type="AtlasTexture" id=1] [sub_resource type="AtlasTexture" id=1]
atlas = ExtResource( 3 ) atlas = ExtResource( 3 )
@ -27,4 +28,5 @@ position = Vector2( 209.839, 320 )
scale = Vector2( 2.91891, 2.5 ) scale = Vector2( 2.91891, 2.5 )
texture = SubResource( 1 ) texture = SubResource( 1 )
region_rect = Rect2( 0, 0, 144, 256 ) region_rect = Rect2( 0, 0, 144, 256 )
[connection signal="move" from="Player" to="." method="_on_Player_move"]
[node name="UI" parent="." instance=ExtResource( 4 )]

View file

@ -4,24 +4,31 @@ export var speed = 3 # How fast the player will move (pixels/sec).
export var jump_speed = 4 export var jump_speed = 4
export var speed_inc = 0.3 export var speed_inc = 0.3
signal move signal start # The bird starts
signal hit signal passed # The bird passes a Tower
signal hit # The bird is hit/flies off screen
var tower_locations = []
var screen_size var screen_size
var playing = false var playing = false
var speed_y = 0 var speed_y = 0
var x_offset
func start(): func start():
position = screen_size / 2 position = screen_size / 2
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
screen_size = get_viewport_rect().size screen_size = get_viewport_rect().size
x_offset = get_global_transform().get_origin().x
func _process(delta): func _process(delta):
if Input.is_action_just_pressed("ui_accept"): if Input.is_action_just_pressed("ui_accept"):
if not playing: if not playing:
emit_signal("start")
speed_y = 0 speed_y = 0
playing = true playing = true
$CollisionShape2D.set_deferred("disabled", false) $CollisionShape2D.set_deferred("disabled", false)
@ -29,11 +36,15 @@ func _process(delta):
if not playing: if not playing:
return return
speed_y += speed_inc speed_y += speed_inc
position += Vector2(speed, speed_y * speed) position += Vector2(speed, speed_y * speed)
var global = get_global_transform().get_origin()
while global.x - x_offset > tower_locations[0]:
emit_signal("passed")
tower_locations.pop_front()
rotation = atan(speed_y / speed) rotation = atan(speed_y / speed)
@ -46,4 +57,7 @@ func _on_Player_body_entered(body):
playing = false playing = false
#hide() # Player disappears after being hit. #hide() # Player disappears after being hit.
emit_signal("hit") emit_signal("hit")
$CollisionShape2D.set_deferred("disabled", true) $CollisionShape2D.set_deferred("disabled", true)
func _on_Tower_spawn(x):
tower_locations.append(x)

View file

@ -3,11 +3,11 @@
[ext_resource path="res://Player.gd" type="Script" id=1] [ext_resource path="res://Player.gd" type="Script" id=1]
[ext_resource path="res://res/sprites.png" type="Texture" id=2] [ext_resource path="res://res/sprites.png" type="Texture" id=2]
[sub_resource type="AtlasTexture" id=2] [sub_resource type="AtlasTexture" id=1]
atlas = ExtResource( 2 ) atlas = ExtResource( 2 )
region = Rect2( -4, 488, 84, 16 ) region = Rect2( -4, 488, 84, 16 )
[sub_resource type="Animation" id=3] [sub_resource type="Animation" id=2]
length = 0.8 length = 0.8
loop = true loop = true
step = 0.2 step = 0.2
@ -24,12 +24,13 @@ tracks/0/keys = {
"values": [ 0, 1, 2, 1 ] "values": [ 0, 1, 2, 1 ]
} }
[sub_resource type="CapsuleShape2D" id=1] [sub_resource type="CapsuleShape2D" id=3]
radius = 12.8837 radius = 12.8837
height = 4.07484 height = 4.07484
[node name="Area2D" type="Area2D"] [node name="Area2D" type="Area2D"]
position = Vector2( 9.25964, 6.09653 ) position = Vector2( 9.25964, 6.09653 )
scale = Vector2( 1, 1.02134 )
script = ExtResource( 1 ) script = ExtResource( 1 )
__meta__ = { __meta__ = {
"_edit_group_": true "_edit_group_": true
@ -40,18 +41,17 @@ __meta__ = {
[node name="Sprite" type="Sprite" parent="Node2D"] [node name="Sprite" type="Sprite" parent="Node2D"]
position = Vector2( -3.46641, -2.14102 ) position = Vector2( -3.46641, -2.14102 )
scale = Vector2( 2.14565, 2.14019 ) scale = Vector2( 2.14565, 2.14019 )
texture = SubResource( 2 ) texture = SubResource( 1 )
hframes = 3 hframes = 3
frame = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="Node2D"] [node name="AnimationPlayer" type="AnimationPlayer" parent="Node2D"]
root_node = NodePath("../..") root_node = NodePath("../..")
autoplay = "fly" autoplay = "fly"
anims/fly = SubResource( 3 ) anims/fly = SubResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
rotation = 1.5708 rotation = 1.5708
shape = SubResource( 1 ) shape = SubResource( 3 )
[node name="Camera2D" type="Camera2D" parent="."] [node name="Camera2D" type="Camera2D" parent="."]
current = true current = true

View file

@ -1,17 +1,14 @@
extends Node2D extends Node2D
signal exit signal exit
# Declare member variables here. Examples: signal passed
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
pass # Replace with function body. pass # Replace with function body.
func _on_Tower_body_entered(body): func _on_Tower_body_entered(body):
print("HIT HERE") emit_signal("hit")
pass # Replace with function body.
func _on_Visibility_screen_exited(): func _on_Visibility_screen_exited():
queue_free() queue_free()

36
UI.gd Normal file
View file

@ -0,0 +1,36 @@
extends CanvasLayer
var best = 0
var current = 0
var best_score;
var current_score;
var ready_text;
# Called when the node enters the scene tree for the first time.
func _ready():
best_score = get_node("MarginContainer/HBoxContainer/BestScore")
current_score = get_node("MarginContainer/HBoxContainer/CurrentScore")
ready_text = get_node("CenterContainer/ReadyText")
func _on_Player_start():
current = 0
ready_text.hide()
update_ui()
func _on_Player_hit():
ready_text.show()
best = max(best, current)
update_ui()
func _on_Player_passed():
current += 1
update_ui()
func update_ui():
best_score.text = "Best: "+str(best)
current_score.text = "Current: "+str(current)
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass

66
UI.tscn Normal file
View file

@ -0,0 +1,66 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://UI.gd" type="Script" id=1]
[sub_resource type="StreamTexture" id=1]
load_path = "res://.import/sprites.png-7e797c86c60ebf1baad54990ba20f2d3.stex"
[sub_resource type="AtlasTexture" id=2]
atlas = SubResource( 1 )
region = Rect2( 329, 59, 58, 25 )
margin = Rect2( -29, -12, 0, 0 )
[node name="UI" type="CanvasLayer"]
script = ExtResource( 1 )
[node name="MarginContainer" type="MarginContainer" parent="."]
margin_top = 600.0
margin_right = 420.0
margin_bottom = 640.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"]
margin_right = 420.0
margin_bottom = 40.0
size_flags_horizontal = 3
size_flags_vertical = 3
alignment = 1
[node name="BestScore" type="Label" parent="MarginContainer/HBoxContainer"]
margin_left = 28.0
margin_top = 13.0
margin_right = 208.0
margin_bottom = 27.0
rect_min_size = Vector2( 180, 0 )
text = "Best: 0"
[node name="CurrentScore" type="Label" parent="MarginContainer/HBoxContainer"]
margin_left = 212.0
margin_top = 13.0
margin_right = 392.0
margin_bottom = 27.0
rect_min_size = Vector2( 180, 0 )
text = "Current: 0"
align = 2
__meta__ = {
"_edit_use_anchors_": false
}
[node name="CenterContainer" type="CenterContainer" parent="."]
margin_right = 420.0
margin_bottom = 640.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ReadyText" type="TextureRect" parent="CenterContainer"]
margin_left = 181.0
margin_top = 307.0
margin_right = 239.0
margin_bottom = 332.0
grow_horizontal = 2
grow_vertical = 2
rect_pivot_offset = Vector2( 0.5, 0.5 )
texture = SubResource( 2 )

View file

@ -23,8 +23,6 @@ config/icon="res://icon.png"
window/size/width=420 window/size/width=420
window/size/height=640 window/size/height=640
window/handheld/orientation="portrait"
window/stretch/mode="viewport"
[physics] [physics]