Optimized scene tree and debugged some area detection

This commit is contained in:
VoidTwo
2021-11-30 23:06:42 -06:00
parent 34f7407d6a
commit 34d4e0454e
27 changed files with 380 additions and 481 deletions

View File

@@ -7,21 +7,21 @@ var velocity: Vector2 = Vector2.ZERO
func _physics_process(_delta: float) -> void:
velocity = Vector2.ZERO
velocity = Vector2.ZERO
if player:
velocity = position.direction_to(player.position).normalized() * SPEED
if player:
velocity = position.direction_to(player.position).normalized() * SPEED
velocity = move_and_slide(velocity)
return
velocity = move_and_slide(velocity)
return
func _on_player_detector_area_entered(area: Area2D) -> void:
if area.get_parent().name == 'Player':
player = area.get_parent()
return
if area.get_parent().name == 'Player':
player = area.get_parent()
return
func _on_player_detector_area_exited(_area: Area2D):
player = null
return
player = null
return

View File

@@ -12,9 +12,7 @@ height = 2.0
[sub_resource type="CircleShape2D" id=2]
radius = 50.0
[node name="Glowing Ghost" type="KinematicBody2D" groups=[
"enemies",
]]
[node name="Glowing Ghost" type="KinematicBody2D" groups=["enemies"]]
collision_layer = 2
script = ExtResource( 4 )
@@ -29,10 +27,10 @@ position = Vector2( 0, -3 )
shape = SubResource( 1 )
[node name="Player Detector" type="Area2D" parent="."]
input_pickable = false
monitorable = false
collision_layer = 0
collision_mask = 2
input_pickable = false
monitorable = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="Player Detector"]
visible = false

View File

@@ -1,20 +1,18 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://Sprites/Enemies/blue_snowball.png" type="Texture" id=1]
[ext_resource path="res://Enemies/snowball.gd" type="Script" id=2]
[ext_resource path="res://Enemies/Snowball.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Enemies/blue_snowball.png" type="Texture" id=2]
[sub_resource type="CircleShape2D" id=1]
radius = 4.47823
[node name="snowball_blue" type="Area2D" groups=[
"enemies",
]]
[node name="snowball_blue" type="Area2D" groups=["damage"]]
collision_layer = 2
script = ExtResource( 2 )
script = ExtResource( 1 )
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 0, -2 )
texture = ExtResource( 1 )
texture = ExtResource( 2 )
[node name="snowball_blue" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )

View File

@@ -0,0 +1,52 @@
extends KinematicBody2D
onready var SNOWBALL_BLUE_SCENE = preload("res://Enemies/Snowball Blue.tscn")
var player = null
var move = Vector2.ZERO
var speed = 1
func _physics_process(delta: float) -> void:
move = Vector2.ZERO
if player != null:
move = position.direction_to(player.position) * speed
else:
move = Vector2.ZERO
move = move.normalized()
move = move_and_collide(move)
func _on_Area2D_body_entered(body: Node) -> void:
if body != self && !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
player = body
func _on_Area2D_body_exited(body: Node) -> void:
if !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
player = null
func fire():
var snowball = SNOWBALL_BLUE_SCENE.instance()
snowball.position = get_global_position()
snowball.player = player
get_parent().add_child(snowball)
$Timer.set_wait_time(1)
func _on_Timer_timeout() -> void:
if player != null:
fire()
func _on_player_detector_area_entered(area: Area2D) -> void:
if area.get_parent().name == 'Player':
player = area.get_parent()
return
func _on_player_detector_area_exited(_area: Area2D):
player = null
return

View File

@@ -1,7 +1,7 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://Sprites/Enemies/blue_snowman.png" type="Texture" id=1]
[ext_resource path="res://Enemies/snowmen_enemy.gd" type="Script" id=2]
[ext_resource path="res://Enemies/Snowman Enemy.gd" type="Script" id=2]
[sub_resource type="CapsuleShape2D" id=1]
radius = 6.0
@@ -22,7 +22,7 @@ position = Vector2( 0.556812, 0.44545 )
shape = SubResource( 1 )
[node name="detection" type="Area2D" parent="."]
collision_layer = 2
collision_layer = 0
collision_mask = 2
[node name="detection" type="CollisionShape2D" parent="detection"]

53
Enemies/Snowman Enemy.gd Normal file
View File

@@ -0,0 +1,53 @@
extends KinematicBody2D
onready var SNOWBALL_SCENE = preload("res://Enemies/Snowball.tscn")
var player = null
var move = Vector2.ZERO
var speed = .5
func _physics_process(delta: float) -> void:
move = Vector2.ZERO
if player != null:
move = position.direction_to(player.position) * speed
else:
move = Vector2.ZERO
move = move.normalized()
move = move_and_collide(move)
func _on_Area2D_body_entered(body: Node) -> void:
if body != self && !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
player = body
func _on_Area2D_body_exited(body: Node) -> void:
if !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
player = null
func fire():
var snowball = SNOWBALL_SCENE.instance()
snowball.position = get_global_position()
snowball.player = player
get_parent().add_child(snowball)
$Timer.set_wait_time(1)
func _on_Timer_timeout() -> void:
if player != null:
fire()
func _on_player_detector_area_entered(area: Area2D) -> void:
if area.get_parent().name == 'Player':
player = area.get_parent()
return
func _on_player_detector_area_exited(_area: Area2D):
player = null
return

View File

@@ -1,7 +1,7 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://Sprites/Enemies/pink_snowman.png" type="Texture" id=1]
[ext_resource path="res://Enemies/snowmen_enemy.gd" type="Script" id=2]
[ext_resource path="res://Enemies/Snowman Enemy.gd" type="Script" id=2]
[sub_resource type="CapsuleShape2D" id=1]
radius = 6.0
@@ -21,7 +21,7 @@ texture = ExtResource( 1 )
shape = SubResource( 1 )
[node name="detection" type="Area2D" parent="."]
collision_layer = 2
collision_layer = 0
collision_mask = 2
[node name="detection" type="CollisionShape2D" parent="detection"]

View File

@@ -8,16 +8,16 @@ var speed = 3
func _ready():
look_vec = player.position - position
look_vec = player.position - position
func _physics_process(delta):
move = Vector2.ZERO
move = move.move_toward(look_vec, delta)
move = move.normalized() * speed
position += move
move = Vector2.ZERO
move = move.move_toward(look_vec, delta)
move = move.normalized() * speed
position += move
#position = position.move_toward(look_vec, delta).normalized() * SPEED
#position = position.move_toward(look_vec, delta).normalized() * SPEED

View File

@@ -1,17 +1,19 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://Sprites/Enemies/pink_snowball.png" type="Texture" id=1]
[ext_resource path="res://Enemies/snowball.gd" type="Script" id=2]
[ext_resource path="res://Enemies/Snowball.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Enemies/pink_snowball.png" type="Texture" id=2]
[sub_resource type="CircleShape2D" id=1]
radius = 4.47823
[node name="snowball" type="Area2D"]
[node name="snowball" type="Area2D" groups=["damage"]]
collision_layer = 2
script = ExtResource( 2 )
collision_mask = 0
monitoring = false
script = ExtResource( 1 )
[node name="Sprite" type="Sprite" parent="."]
texture = ExtResource( 1 )
texture = ExtResource( 2 )
[node name="snowball" type="CollisionShape2D" parent="."]
position = Vector2( -0.00869751, -0.0361767 )

View File

@@ -1,53 +0,0 @@
extends KinematicBody2D
onready var SNOWBALL_SCENE = preload("res://Enemies/snowball.tscn")
var player = null
var move = Vector2.ZERO
var speed = .5
func _physics_process(delta: float) -> void:
move = Vector2.ZERO
if player != null:
move = position.direction_to(player.position) * speed
else:
move = Vector2.ZERO
move = move.normalized()
move = move_and_collide(move)
func _on_Area2D_body_entered(body: Node) -> void:
if body != self && !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
player = body
func _on_Area2D_body_exited(body: Node) -> void:
if !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
player = null
func fire():
var snowball = SNOWBALL_SCENE.instance()
snowball.position = get_global_position()
snowball.player = player
get_parent().add_child(snowball)
$Timer.set_wait_time(1)
func _on_Timer_timeout() -> void:
if player != null:
fire()
func _on_player_detector_area_entered(area: Area2D) -> void:
if area.get_parent().name == 'Player':
player = area.get_parent()
return
func _on_player_detector_area_exited(_area: Area2D):
player = null
return

View File

@@ -1,52 +0,0 @@
extends KinematicBody2D
onready var SNOWBALL_BLUE_SCENE = preload("res://Enemies/snowball_blue.tscn")
var player = null
var move = Vector2.ZERO
var speed = 1
func _physics_process(delta: float) -> void:
move = Vector2.ZERO
if player != null:
move = position.direction_to(player.position) * speed
else:
move = Vector2.ZERO
move = move.normalized()
move = move_and_collide(move)
func _on_Area2D_body_entered(body: Node) -> void:
if body != self && !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
player = body
func _on_Area2D_body_exited(body: Node) -> void:
if !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
player = null
func fire():
var snowball = SNOWBALL_BLUE_SCENE.instance()
snowball.position = get_global_position()
snowball.player = player
get_parent().add_child(snowball)
$Timer.set_wait_time(1)
func _on_Timer_timeout() -> void:
if player != null:
fire()
func _on_player_detector_area_entered(area: Area2D) -> void:
if area.get_parent().name == 'Player':
player = area.get_parent()
return
func _on_player_detector_area_exited(_area: Area2D):
player = null
return

7
GUI/Countdown Timer.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Label
func _process(delta: float) -> void:
var time_seconds: int = int($Timer.get_time_left())
set_text('%02d:%02d' % [time_seconds, int(($Timer.get_time_left() - time_seconds) * 100)])
return

28
GUI/Countdown Timer.tscn Normal file
View File

@@ -0,0 +1,28 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://GUI/Countdown Timer.gd" type="Script" id=1]
[ext_resource path="res://Fonts/AtariClassic.ttf" type="DynamicFontData" id=2]
[sub_resource type="DynamicFont" id=1]
size = 40
font_data = ExtResource( 2 )
[node name="Countdown Timer" type="Label"]
margin_left = 135.0
margin_top = 1.0
margin_right = 335.0
margin_bottom = 41.0
rect_min_size = Vector2( 200, 0 )
rect_scale = Vector2( 0.25, 0.25 )
custom_colors/font_color = Color( 0, 0, 0, 1 )
custom_fonts/font = SubResource( 1 )
align = 1
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Timer" type="Timer" parent="."]
wait_time = 60.0
one_shot = true
autostart = true

View File

@@ -4,36 +4,36 @@ signal complete(option)
func _on_new_game_button_pressed() -> void:
emit_signal('complete', 'new game')
return
emit_signal('complete', 'new game')
return
func _on_quit_button_pressed() -> void:
get_tree().quit()
return
get_tree().quit()
return
func _on_continue_button_mouse_entered() -> void:
if not $'Menu/Menu Elements/Menu Options/Continue/Continue Button'.disabled:
$'Menu Button Hover'.play(0.0)
return
if not $'Menu/Menu Elements/Menu Options/Continue/Continue Button'.disabled:
$'Menu Button Hover'.play(0.0)
return
func _on_new_game_button_mouse_entered() -> void:
$'Menu Button Hover'.play(0.0)
return
$'Menu Button Hover'.play(0.0)
return
func _on_settings_button_mouse_entered() -> void:
$'Menu Button Hover'.play(0.0)
return
$'Menu Button Hover'.play(0.0)
return
func _on_credits_button_mouse_entered() -> void:
$'Menu Button Hover'.play(0.0)
return
$'Menu Button Hover'.play(0.0)
return
func _on_quit_button_mouse_entered() -> void:
$'Menu Button Hover'.play(0.0)
return
$'Menu Button Hover'.play(0.0)
return

View File

@@ -1,27 +0,0 @@
extends Control
export (int) var minutes =0
export (int) var seconds = 0
var dsec = 0
func _physics_process(delta: float) -> void:
if seconds > 0 and dsec <= 0:
seconds -=1
dsec = 10
if minutes > 0 and seconds <= 0:
minutes -= 1
seconds = 60
if seconds >= 10:
$sec.set_text(str(seconds))
else:
$sec.set_text("0"+str(seconds))
if dsec >=10:
$dsec.set_text(str(dsec))
else:
$dsec.set_text("0" + str(dsec))
func _on_Timer_timeout() -> void:
dsec-=1
pass # Replace with function body.

View File

@@ -1,10 +1,9 @@
extends Area2D
func _ready() -> void:
pass # Replace with function body.
signal coin_collected
func _on_Node2D_body_entered(body: Node) -> void:
if body.get_name() == "Player":
queue_free() # Replace with function body.
if body.get_name() == 'Player':
emit_signal('coin_collected')
queue_free()

View File

@@ -1,20 +1,19 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://Sprites/Assets/coin.png" type="Texture" id=1]
[ext_resource path="res://Levels/Interactives/coin.gd" type="Script" id=2]
[ext_resource path="res://Levels/Interactives/Coin.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Assets/coin.png" type="Texture" id=2]
[sub_resource type="CircleShape2D" id=1]
radius = 6.38067
[node name="coin" type="Area2D"]
script = ExtResource( 2 )
script = ExtResource( 1 )
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 28.3217, 41.6257 )
texture = ExtResource( 1 )
position = Vector2( 0, 1 )
texture = ExtResource( 2 )
[node name="coin" type="CollisionShape2D" parent="."]
position = Vector2( 28.4389, 40.6703 )
shape = SubResource( 1 )
[connection signal="body_entered" from="." to="." method="_on_Node2D_body_entered"]

View File

@@ -1,6 +1,6 @@
extends Node2D
onready var coin = preload("res://Levels/Interactives/coin.tscn")
onready var coin = preload("res://Levels/Interactives/Coin.tscn")
#onready var coin_container = get_node("YSort/coin_container")
#have event for timer to run out
@@ -10,21 +10,15 @@ var screensize
var score = 0
func _ready() -> void:
$YSort/Player.load_hud($HUD)
$YSort/Player.position = get_viewport_rect().size / 2
randomize()
screensize = get_viewport_rect().size
set_process(true)
spawn_coins(5)
return
$YSort/Player.load_hud($HUD)
screensize = get_viewport_rect().size
spawn_coins(5)
return
func _process(delta):
if $AudioStreamPlayer.playing == false:
$AudioStreamPlayer.play()
func spawn_coins(num):
for i in range(num):
var g = coin.instance()
$'YSort/coin_container'.add_child(g)
#g.set_pos(Vector2(rand_range(0, screensize.x-40), rand_range(0, screensize.y-40)))
g.position = Vector2(rand_range(0, screensize.x-40), rand_range(0, screensize.y-40))
for i in range(num):
var g = coin.instance()
$'coin_container'.add_child(g)
#g.set_pos(Vector2(rand_range(0, screensize.x-40), rand_range(0, screensize.y-40)))
g.position = Vector2(rand_range(0, screensize.x-40), rand_range(0, screensize.y-40))

View File

@@ -1,20 +1,16 @@
[gd_scene load_steps=16 format=2]
[gd_scene load_steps=15 format=2]
[ext_resource path="res://Player/Player.tscn" type="PackedScene" id=1]
[ext_resource path="res://Levels/Level 3.gd" type="Script" id=2]
[ext_resource path="res://Resources/tileSet.tres" type="TileSet" id=3]
[ext_resource path="res://Enemies/snowmen_enemy.tscn" type="PackedScene" id=4]
[ext_resource path="res://Sprites/Assets/forestTreeBig.png" type="Texture" id=5]
[ext_resource path="res://Enemies/snowmen_enemy_blue.tscn" type="PackedScene" id=6]
[ext_resource path="res://Enemies/snowmen_enemy_blue.gd" type="Script" id=7]
[ext_resource path="res://Levels/Interactives/Countdown.gd" type="Script" id=8]
[ext_resource path="res://Enemies/Snowman Enemy.tscn" type="PackedScene" id=4]
[ext_resource path="res://Levels/Objects/Tree.tscn" type="PackedScene" id=5]
[ext_resource path="res://Enemies/Snowman Enemy Blue.tscn" type="PackedScene" id=6]
[ext_resource path="res://Enemies/Snowman Enemy Blue.gd" type="Script" id=7]
[ext_resource path="res://GUI/HUD.tscn" type="PackedScene" id=9]
[ext_resource path="res://GUI/Pause Screen.tscn" type="PackedScene" id=10]
[ext_resource path="res://Music/Level_3.mp3" type="AudioStream" id=11]
[sub_resource type="CapsuleShape2D" id=1]
radius = 9.0515
height = 0.0
[ext_resource path="res://GUI/Countdown Timer.tscn" type="PackedScene" id=12]
[sub_resource type="SegmentShape2D" id=2]
a = Vector2( 3.84175, -99.0063 )
@@ -28,7 +24,7 @@ b = Vector2( 309.792, 29.724 )
a = Vector2( 369.611, 141.974 )
b = Vector2( 49.76, 142.724 )
[node name="World" type="Node2D"]
[node name="Level 3" type="Node2D"]
script = ExtResource( 2 )
[node name="TileMap" type="TileMap" parent="."]
@@ -42,191 +38,93 @@ tile_data = PoolIntArray( 0, 0, 65537, 1, 0, 65538, 2, 0, 65538, 3, 0, 65538, 4,
[node name="YSort" type="YSort" parent="."]
[node name="Player" parent="YSort" instance=ExtResource( 1 )]
position = Vector2( 20, 26 )
position = Vector2( 120, 60 )
ACCELERATION = 500
FRICTION = 100
[node name="tree6" type="StaticBody2D" parent="YSort"]
[node name="Tree 1" parent="YSort" instance=ExtResource( 5 )]
position = Vector2( 35.7089, 147.785 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/tree6"]
position = Vector2( 71.8801, 91.6645 )
shape = SubResource( 1 )
[node name="Tree 2" parent="YSort" instance=ExtResource( 5 )]
position = Vector2( 59.3969, 96.8735 )
[node name="forestTreeBig2" type="Sprite" parent="YSort/tree6"]
position = Vector2( 72.0738, 92.0067 )
texture = ExtResource( 5 )
[node name="Tree 3" parent="YSort" instance=ExtResource( 5 )]
position = Vector2( 74.5997, 42.7799 )
[node name="blue_snowman2" parent="YSort" groups=[
"enemies",
] instance=ExtResource( 6 )]
[node name="Tree 4" parent="YSort" instance=ExtResource( 5 )]
position = Vector2( 153.442, 160.867 )
[node name="Tree 5" parent="YSort" instance=ExtResource( 5 )]
position = Vector2( 155.563, 93.6916 )
[node name="Tree 6" parent="YSort" instance=ExtResource( 5 )]
position = Vector2( 211.071, 43.1335 )
[node name="Tree 7" parent="YSort" instance=ExtResource( 5 )]
position = Vector2( 262.336, 86.2669 )
[node name="Tree 8" parent="YSort" instance=ExtResource( 5 )]
position = Vector2( 231.224, 137.179 )
[node name="Enemies" type="YSort" parent="YSort"]
[node name="Snowman 1" parent="YSort/Enemies" groups=["enemies"] instance=ExtResource( 4 )]
position = Vector2( 190.316, 146.569 )
[node name="Snowman 2" parent="YSort/Enemies" groups=["enemies"] instance=ExtResource( 4 )]
position = Vector2( 67.4812, 153.194 )
[node name="Blue Snowman 1" parent="YSort/Enemies" groups=["enemies"] instance=ExtResource( 6 )]
position = Vector2( 259.084, 49.7897 )
script = ExtResource( 7 )
[node name="blue_snowman" parent="YSort" groups=[
"enemies",
] instance=ExtResource( 6 )]
[node name="Blue Snowman 2" parent="YSort/Enemies" groups=["enemies"] instance=ExtResource( 6 )]
position = Vector2( 261.1, 142.19 )
script = ExtResource( 7 )
[node name="snowmen_enemy2" parent="YSort" groups=[
"enemies",
] instance=ExtResource( 4 )]
position = Vector2( 190.316, 146.569 )
[node name="snowmen_enemy" parent="YSort" groups=[
"enemies",
] instance=ExtResource( 4 )]
position = Vector2( 67.4812, 153.194 )
[node name="tree5" type="StaticBody2D" parent="YSort"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/tree5"]
position = Vector2( 265.396, 85.2148 )
shape = SubResource( 1 )
[node name="forestTreeBig" type="Sprite" parent="YSort/tree5"]
position = Vector2( 265.238, 84.0492 )
texture = ExtResource( 5 )
[node name="tree8" type="StaticBody2D" parent="YSort"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/tree8"]
position = Vector2( 85.1921, 39.1628 )
shape = SubResource( 1 )
[node name="forestTreeBig5" type="Sprite" parent="YSort/tree8"]
position = Vector2( 84.7548, 38.2794 )
texture = ExtResource( 5 )
[node name="tree7" type="StaticBody2D" parent="YSort"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/tree7"]
position = Vector2( 38.4727, 145.283 )
shape = SubResource( 1 )
[node name="forestTreeBig6" type="Sprite" parent="YSort/tree7"]
position = Vector2( 38.7028, 144.733 )
texture = ExtResource( 5 )
[node name="tree4" type="StaticBody2D" parent="YSort"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/tree4"]
position = Vector2( 211.334, 36.8269 )
shape = SubResource( 1 )
[node name="forestTreeBig7" type="Sprite" parent="YSort/tree4"]
position = Vector2( 210.897, 36.2771 )
texture = ExtResource( 5 )
[node name="tree" type="StaticBody2D" parent="YSort"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/tree"]
position = Vector2( 235.362, 138.275 )
shape = SubResource( 1 )
[node name="forestTreeBig" type="Sprite" parent="YSort/tree/CollisionShape2D"]
position = Vector2( -0.103607, -0.883423 )
texture = ExtResource( 5 )
[node name="tree3" type="StaticBody2D" parent="YSort"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/tree3"]
position = Vector2( 153.603, 158.631 )
shape = SubResource( 1 )
[node name="forestTreeBig3" type="Sprite" parent="YSort/tree3"]
position = Vector2( 153.165, 157.748 )
texture = ExtResource( 5 )
[node name="tree2" type="StaticBody2D" parent="YSort"]
position = Vector2( 2.47487, 0.707108 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/tree2"]
position = Vector2( 157.273, 93.2238 )
shape = SubResource( 1 )
[node name="forestTreeBig4" type="Sprite" parent="YSort/tree2"]
position = Vector2( 156.836, 92.3404 )
texture = ExtResource( 5 )
[node name="wall" type="StaticBody2D" parent="YSort"]
[node name="wall" type="StaticBody2D" parent="."]
position = Vector2( -17.4614, 141.279 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/wall"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="wall"]
position = Vector2( 329.803, -41.5425 )
shape = SubResource( 2 )
[node name="wall1" type="StaticBody2D" parent="YSort"]
[node name="wall1" type="StaticBody2D" parent="."]
position = Vector2( 15.874, -26.1921 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/wall1"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="wall1"]
position = Vector2( -3.71627, -0.261772 )
shape = SubResource( 3 )
[node name="wall2" type="StaticBody2D" parent="YSort"]
[node name="wall2" type="StaticBody2D" parent="."]
position = Vector2( -7.93701, 71.8299 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/wall2"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="wall2"]
position = Vector2( 8.36367, 26.9858 )
shape = SubResource( 2 )
[node name="wall3" type="StaticBody2D" parent="YSort"]
[node name="wall3" type="StaticBody2D" parent="."]
position = Vector2( -49.6063, 34.526 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="YSort/wall3"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="wall3"]
position = Vector2( 0, -4.25 )
shape = SubResource( 4 )
[node name="coin_container" type="Control" parent="YSort"]
[node name="coin_container" type="Control" parent="."]
margin_right = 40.0
margin_bottom = 40.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Countdown" type="Control" parent="."]
margin_right = 40.0
margin_bottom = 40.0
script = ExtResource( 8 )
__meta__ = {
"_edit_use_anchors_": false
}
minutes = 3
[node name="sec" type="RichTextLabel" parent="Countdown"]
modulate = Color( 0.25098, 0.0431373, 0.411765, 1 )
self_modulate = Color( 0.25098, 0.0431373, 0.411765, 1 )
margin_left = 139.114
margin_top = 5.0
margin_right = 169.114
margin_bottom = 26.0
text = "00"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="dsec" type="RichTextLabel" parent="Countdown"]
modulate = Color( 0.25098, 0.0431373, 0.411765, 1 )
self_modulate = Color( 0.25098, 0.0431373, 0.411765, 1 )
margin_left = 158.512
margin_top = 4.7622
margin_right = 198.512
margin_bottom = 44.7622
text = "0"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Timer" type="Timer" parent="Countdown"]
process_mode = 0
wait_time = 0.1
autostart = true
[node name="Countdown Timer" parent="." instance=ExtResource( 12 )]
[node name="HUD" parent="." instance=ExtResource( 9 )]
[node name="Pause Screen" parent="." instance=ExtResource( 10 )]
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
[node name="BGM" type="AudioStreamPlayer" parent="."]
pause_mode = 2
stream = ExtResource( 11 )
[connection signal="timeout" from="Countdown/Timer" to="Countdown" method="_on_Timer_timeout"]
volume_db = -12.0
autoplay = true

View File

@@ -2,5 +2,5 @@ extends Node2D
func _ready() -> void:
$YSort/Player.load_hud($HUD)
return
$YSort/Player.load_hud($HUD)
return

View File

@@ -15,7 +15,6 @@
script = ExtResource( 2 )
[node name="CanvasModulate" type="CanvasModulate" parent="."]
visible = false
color = Color( 0, 0, 0, 1 )
[node name="Floor" type="TileMap" parent="."]

91
Main.gd
View File

@@ -7,74 +7,75 @@ export var world_path: String
func _ready() -> void:
var splash_screen: Node = play_splash_screen()
yield(splash_screen, 'complete')
splash_screen = null
randomize()
var splash_screen: Node = play_splash_screen()
yield(splash_screen, 'complete')
splash_screen = null
var main_menu: Node = play_main_menu()
yield(main_menu, 'complete')
free_connected_node(main_menu, 'main_menu_option')
main_menu = null
return
var main_menu: Node = play_main_menu()
yield(main_menu, 'complete')
free_connected_node(main_menu, 'main_menu_option')
main_menu = null
return
func play_splash_screen() -> Node:
var splash_screen: Node = load(splash_screen_path).instance()
if splash_screen.connect('complete', self, 'free_connected_node',
[splash_screen, 'free_connected_node']) != OK:
print('ERROR: Splash Screen "complete" signal already connected.')
var splash_screen: Node = load(splash_screen_path).instance()
if splash_screen.connect('complete', self, 'free_connected_node',
[splash_screen, 'free_connected_node']) != OK:
print('ERROR: Splash Screen "complete" signal already connected.')
add_child(splash_screen)
return splash_screen
add_child(splash_screen)
return splash_screen
func play_main_menu() -> Node:
var main_menu: Node = load(main_menu_path).instance()
if main_menu.connect('complete', self, 'main_menu_option') != OK:
print('ERROR: Main Menu "complete" signal already connected.')
var main_menu: Node = load(main_menu_path).instance()
if main_menu.connect('complete', self, 'main_menu_option') != OK:
print('ERROR: Main Menu "complete" signal already connected.')
add_child(main_menu)
return main_menu
add_child(main_menu)
return main_menu
func main_menu_option(option: String) -> void:
if option == 'new game':
var level_select_menu: Node = play_level_select_menu()
yield(level_select_menu, 'complete')
free_connected_node(level_select_menu, 'level_select_menu_option')
level_select_menu = null
return
if option == 'new game':
var level_select_menu: Node = play_level_select_menu()
yield(level_select_menu, 'complete')
free_connected_node(level_select_menu, 'level_select_menu_option')
level_select_menu = null
return
func play_level_select_menu() -> Node:
var level_select_menu: Node = load(level_select_menu_path).instance()
if level_select_menu.connect('complete', self, 'level_select_menu_option') != OK:
print('ERROR: Level Select Menu "complete" signal already connected.')
var level_select_menu: Node = load(level_select_menu_path).instance()
if level_select_menu.connect('complete', self, 'level_select_menu_option') != OK:
print('ERROR: Level Select Menu "complete" signal already connected.')
add_child(level_select_menu)
return level_select_menu
add_child(level_select_menu)
return level_select_menu
func level_select_menu_option(option: String) -> void:
var level: String = 'res://Levels/'
if option == 'H':
level += 'Hub World.tscn'
else:
level += 'Level ' + option + '.tscn'
var level: String = 'res://Levels/'
if option == 'H':
level += 'Hub World.tscn'
else:
level += 'Level ' + option + '.tscn'
new_game(level)
return
new_game(level)
return
func free_connected_node(node: Node, connected_function: String) -> void:
node.disconnect('complete', self, connected_function)
remove_child(node)
node.queue_free()
return
node.disconnect('complete', self, connected_function)
remove_child(node)
node.queue_free()
return
func new_game(level: String) -> void:
if get_tree().change_scene(level) != OK:
print('ERROR: Main failed to change scene to Level.')
queue_free()
return
if get_tree().change_scene(level) != OK:
print('ERROR: Main failed to change scene to Level.')
queue_free()
return

View File

@@ -12,90 +12,93 @@ var velocity: Vector2 = Vector2.ZERO
func _physics_process(delta: float) -> void:
var input_vector: Vector2 = Vector2.ZERO
var input_vector: Vector2 = Vector2.ZERO
input_vector.x = Input.get_action_strength('player_right') \
- Input.get_action_strength('player_left')
input_vector.y = Input.get_action_strength('player_down') \
- Input.get_action_strength('player_up')
input_vector = input_vector.normalized()
input_vector.x = Input.get_action_strength('player_right') \
- Input.get_action_strength('player_left')
input_vector.y = Input.get_action_strength('player_down') \
- Input.get_action_strength('player_up')
input_vector = input_vector.normalized()
if input_vector != Vector2.ZERO:
$AnimationTree.set('parameters/Idle/blend_position', input_vector)
velocity = velocity.move_toward(input_vector * MAX_SPEED, ACCELERATION * delta)
else:
velocity = velocity.move_toward(Vector2.ZERO, FRICTION * delta)
if input_vector != Vector2.ZERO:
$AnimationTree.set('parameters/Idle/blend_position', input_vector)
velocity = velocity.move_toward(input_vector * MAX_SPEED, ACCELERATION * delta)
else:
velocity = velocity.move_toward(Vector2.ZERO, FRICTION * delta)
velocity = move_and_slide(velocity)
return
velocity = move_and_slide(velocity)
return
func load_hud(node: CanvasLayer) -> void:
hud = node
if hud.connect('add_currency', self, 'add_currency') != OK:
print('ERROR: HUD "add_currency" signal already connected.')
hud = node
if hud.connect('add_currency', self, 'add_currency') != OK:
print('ERROR: HUD "add_currency" signal already connected.')
hud.update_health(HEALTH_SLICES[health_index])
hud.update_currency($Inventory.get_currency())
return
hud.update_health(HEALTH_SLICES[health_index])
hud.update_currency($Inventory.get_currency())
return
func add_currency(amount: int) -> void:
$Inventory.add_currency(amount)
return
$Inventory.add_currency(amount)
return
func _on_Inventory_update_currency(amount: int) -> void:
hud.update_currency(amount)
return
hud.update_currency(amount)
return
func _on_Hitbox_body_entered(body: Node) -> void:
if not 'enemies' in body.get_groups():
return
#var timer = Timer.new()
elif body.name.begins_with("blue_snowman"):
MAX_SPEED = 20
yield(get_tree().create_timer(3.0), "timeout")
MAX_SPEED = 120
if not 'enemies' in body.get_groups():
return
#var timer = Timer.new()
else:
health_index != 0
health_index -= 1
hud.update_health(HEALTH_SLICES[health_index])
return
elif body.name.begins_with("blue_snowman"):
MAX_SPEED = 20
yield(get_tree().create_timer(3.0), "timeout")
MAX_SPEED = 120
elif health_index != 0:
health_index != 0
health_index -= 1
hud.update_health(HEALTH_SLICES[health_index])
else:
get_tree().change_scene('res://Levels/Hub World.tscn')
return
func _input(event: InputEvent) -> void:
if event.is_action_pressed('screenshot'):
var img: Image = get_viewport().get_texture().get_data()
yield(get_tree(), "idle_frame")
yield(get_tree(), "idle_frame")
if event.is_action_pressed('screenshot'):
var img: Image = get_viewport().get_texture().get_data()
yield(get_tree(), "idle_frame")
yield(get_tree(), "idle_frame")
img.flip_y()
img.flip_y()
var time: Dictionary = OS.get_datetime_from_unix_time(OS.get_unix_time())
var time_msecs: int = OS.get_system_time_msecs()
var time: Dictionary = OS.get_datetime_from_unix_time(OS.get_unix_time())
var time_msecs: int = OS.get_system_time_msecs()
if img.save_png('user://Screenshot_%d%d%d_%d.png' % [time.year, time.month, time.day, time_msecs]) != OK:
print('ERROR: Failed saving screenshot.')
return
if img.save_png('user://Screenshot_%d%d%d_%d.png' % [time.year, time.month, time.day, time_msecs]) != OK:
print('ERROR: Failed saving screenshot.')
return
func _on_Hitbox_area_entered(area: Area2D) -> void:
print(area.name)
if area.name.begins_with("coin"):
print("COIN")
if not 'enemies' in area.get_parent().get_groups() or area.name.begins_with("detection") or (not area.name.begins_with("snowball")) :
return
print(area.name)
if area.name.begins_with("coin"):
print("COIN")
if area.name == 'detection':
return
if health_index != 0:
health_index -= 1
hud.update_health(HEALTH_SLICES[health_index])
return
if 'enemies' in area.get_parent().get_groups() or area.name != 'detection' or 'damage' in area.get_groups():
if health_index != 0:
health_index -= 1
hud.update_health(HEALTH_SLICES[health_index])
else:
get_tree().change_scene('res://Levels/Hub World.tscn')
return

View File

@@ -20,7 +20,7 @@ compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
@@ -31,5 +31,5 @@ process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
detect_3d=false
svg/scale=1.0

View File

@@ -12,11 +12,11 @@ config_version=4
config/name="Embodiment"
run/main_scene="res://Main.tscn"
run/delta_sync_after_draw=true
boot_splash/image="res://Sprites/Assets/Black_Background.png"
boot_splash/use_filter=false
boot_splash/bg_color=Color( 0, 0, 0, 1 )
config/icon="res://Sprites/Assets/icon.png"
run/delta_sync_after_draw=true
[display]
@@ -31,27 +31,27 @@ window/stretch/aspect="keep"
player_right={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null)
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
player_left={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null)
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
player_up={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null)
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
player_down={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null)
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
screenshot={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777245,"unicode":0,"echo":false,"script":null)
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777245,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}