summaryrefslogtreecommitdiff
path: root/Scenes/Entities
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2024-04-14 21:49:20 +0200
committerDaniel Weipert <git@mail.dweipert.de>2024-04-14 21:49:20 +0200
commitf27937e6e9b6a7146dd09fc711d2d293ecf5abbf (patch)
treee0ddd5e6d356000e4f29af6211a736284a4972ee /Scenes/Entities
parent96d36cee33d6321834565f0a5d412ef95c5ceffd (diff)
update
Diffstat (limited to 'Scenes/Entities')
-rw-r--r--Scenes/Entities/Enemies/Balloon.gd43
-rw-r--r--Scenes/Entities/Enemies/Balloon.tscn123
-rw-r--r--Scenes/Entities/Enemies/Components/Collision.gd18
-rw-r--r--Scenes/Entities/Enemies/Components/Collision.tscn6
-rw-r--r--Scenes/Entities/Enemies/Components/Movement.gd56
-rw-r--r--Scenes/Entities/Enemies/Components/Movement.tscn6
-rw-r--r--Scenes/Entities/Objects/Box.tscn33
-rw-r--r--Scenes/Entities/Objects/Sign.gd20
-rw-r--r--Scenes/Entities/Objects/Sign.tscn21
-rw-r--r--Scenes/Entities/Player.gd96
-rw-r--r--Scenes/Entities/Player.tscn227
11 files changed, 570 insertions, 79 deletions
diff --git a/Scenes/Entities/Enemies/Balloon.gd b/Scenes/Entities/Enemies/Balloon.gd
new file mode 100644
index 0000000..bc79f24
--- /dev/null
+++ b/Scenes/Entities/Enemies/Balloon.gd
@@ -0,0 +1,43 @@
+extends CharacterBody2D
+
+
+@export var health: int
+
+
+func _ready():
+ add_to_group("enemies")
+
+ get_node("Collision").init()
+
+ get_node("Movement").connect("direction_changed", func(current_direction):
+ var frame = $AnimatedSprite2D.frame
+ var progress = $AnimatedSprite2D.frame_progress
+ if current_direction == Vector2.UP:
+ $AnimatedSprite2D.play("up")
+ elif current_direction == Vector2.DOWN:
+ $AnimatedSprite2D.play("down")
+ elif current_direction == Vector2.LEFT:
+ $AnimatedSprite2D.play("left")
+ elif current_direction == Vector2.RIGHT:
+ $AnimatedSprite2D.play("right")
+ $AnimatedSprite2D.set_frame_and_progress(frame, progress)
+ )
+
+ get_node("Collision").connect("collided", func(area):
+ if area.is_in_group("explosions"):
+ health -= 1
+ if health <= 0:
+ set_physics_process(false)
+ remove_child(get_node("Movement"))
+
+ $AnimatedSprite2D.play("death")
+ await $AnimatedSprite2D.animation_finished
+ # todo shrink to 0
+ queue_free()
+ )
+
+
+func _physics_process(delta):
+ get_node("Movement").physics_process(delta)
+
+ # todo: animation shadow
diff --git a/Scenes/Entities/Enemies/Balloon.tscn b/Scenes/Entities/Enemies/Balloon.tscn
new file mode 100644
index 0000000..85b68c1
--- /dev/null
+++ b/Scenes/Entities/Enemies/Balloon.tscn
@@ -0,0 +1,123 @@
+[gd_scene load_steps=19 format=3 uid="uid://ccolri3egf8rk"]
+
+[ext_resource type="Script" path="res://Scenes/Entities/Enemies/Balloon.gd" id="1_8q3w8"]
+[ext_resource type="Texture2D" uid="uid://ck1sxw5vqhoa" path="res://Assets/Enemies/Balloon_death_2.png" id="2_c4j5c"]
+[ext_resource type="Texture2D" uid="uid://b1mr0hh682o5o" path="res://Assets/Enemies/Balloon_down_2_01.png" id="3_pcii7"]
+[ext_resource type="Texture2D" uid="uid://bqjxycrl7qh2s" path="res://Assets/Enemies/Balloon_down_2_02.png" id="4_3eanq"]
+[ext_resource type="Texture2D" uid="uid://ciku28v7q6a2q" path="res://Assets/Enemies/Balloon_down_2_03.png" id="5_vhsnp"]
+[ext_resource type="Texture2D" uid="uid://di8wp5yyn36uj" path="res://Assets/Enemies/Balloon_left_2_01.png" id="6_ykdih"]
+[ext_resource type="Texture2D" uid="uid://c0qju385rrnvv" path="res://Assets/Enemies/Balloon_left_2_02.png" id="7_81kws"]
+[ext_resource type="Texture2D" uid="uid://bgjm6vhpdxgbe" path="res://Assets/Enemies/Balloon_left_2_03.png" id="8_7eum3"]
+[ext_resource type="Texture2D" uid="uid://cjqjq1ppdhoxe" path="res://Assets/Enemies/Balloon_right_2_01.png" id="9_doy2d"]
+[ext_resource type="Texture2D" uid="uid://dmsxbrwqju44n" path="res://Assets/Enemies/Balloon_right_2_02.png" id="10_xyola"]
+[ext_resource type="Texture2D" uid="uid://ci21n2unmik6w" path="res://Assets/Enemies/Balloon_right_2_03.png" id="11_y5de8"]
+[ext_resource type="Texture2D" uid="uid://w7jyuri324sv" path="res://Assets/Enemies/Balloon_up_2_01.png" id="12_jhcfp"]
+[ext_resource type="Texture2D" uid="uid://dts0ofiyjlxfe" path="res://Assets/Enemies/Balloon_up_2_02.png" id="13_8valq"]
+[ext_resource type="Texture2D" uid="uid://u56kfb4hq87o" path="res://Assets/Enemies/Balloon_up_2_03.png" id="14_757al"]
+[ext_resource type="PackedScene" uid="uid://cq7yj2av01tqd" path="res://Scenes/Entities/Enemies/Components/Movement.tscn" id="15_fwetl"]
+[ext_resource type="PackedScene" uid="uid://ce3vv2pod6auc" path="res://Scenes/Entities/Enemies/Components/Collision.tscn" id="16_yau34"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_nxaqi"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_c4j5c")
+}],
+"loop": false,
+"name": &"death",
+"speed": 1.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_pcii7")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_3eanq")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_pcii7")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_vhsnp")
+}],
+"loop": true,
+"name": &"down",
+"speed": 2.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("6_ykdih")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_81kws")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_ykdih")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_7eum3")
+}],
+"loop": true,
+"name": &"left",
+"speed": 2.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("9_doy2d")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_xyola")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_doy2d")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_y5de8")
+}],
+"loop": true,
+"name": &"right",
+"speed": 2.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("12_jhcfp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("13_8valq")
+}, {
+"duration": 1.0,
+"texture": ExtResource("12_jhcfp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("14_757al")
+}],
+"loop": true,
+"name": &"up",
+"speed": 2.0
+}]
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_abul4"]
+radius = 6.0
+height = 18.0
+
+[node name="Balloon" type="CharacterBody2D"]
+collision_layer = 16
+collision_mask = 62
+script = ExtResource("1_8q3w8")
+health = 1
+
+[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
+sprite_frames = SubResource("SpriteFrames_nxaqi")
+animation = &"down"
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+shape = SubResource("CapsuleShape2D_abul4")
+
+[node name="Movement" parent="." instance=ExtResource("15_fwetl")]
+entityPath = NodePath("..")
+spritePath = NodePath("../AnimatedSprite2D")
+SPEED = 2
+
+[node name="Collision" parent="." instance=ExtResource("16_yau34")]
+entityPath = NodePath("..")
+collision_shape_path = NodePath("../CollisionShape2D")
diff --git a/Scenes/Entities/Enemies/Components/Collision.gd b/Scenes/Entities/Enemies/Components/Collision.gd
new file mode 100644
index 0000000..b2e8d9b
--- /dev/null
+++ b/Scenes/Entities/Enemies/Components/Collision.gd
@@ -0,0 +1,18 @@
+extends Node
+
+class_name Component_Collision
+
+
+signal collided
+
+@export_node_path("CharacterBody2D") var entityPath: NodePath
+@onready var entity: CharacterBody2D = get_node(entityPath)
+
+@export_node_path("CollisionShape2D") var collision_shape_path: NodePath
+@onready var collision_shape: CollisionShape2D = get_node(collision_shape_path)
+
+
+func init():
+ var collision_area = Utilities.Collision.Area.new(entity, collision_shape)
+ collision_area.connect("collided", func(area): emit_signal("collided", area))
+ entity.add_child(collision_area)
diff --git a/Scenes/Entities/Enemies/Components/Collision.tscn b/Scenes/Entities/Enemies/Components/Collision.tscn
new file mode 100644
index 0000000..d11f927
--- /dev/null
+++ b/Scenes/Entities/Enemies/Components/Collision.tscn
@@ -0,0 +1,6 @@
+[gd_scene load_steps=2 format=3 uid="uid://ce3vv2pod6auc"]
+
+[ext_resource type="Script" path="res://Scenes/Entities/Enemies/Components/Collision.gd" id="1_j60o5"]
+
+[node name="Collision" type="Node"]
+script = ExtResource("1_j60o5")
diff --git a/Scenes/Entities/Enemies/Components/Movement.gd b/Scenes/Entities/Enemies/Components/Movement.gd
new file mode 100644
index 0000000..0b30820
--- /dev/null
+++ b/Scenes/Entities/Enemies/Components/Movement.gd
@@ -0,0 +1,56 @@
+extends Node
+
+signal direction_changed
+
+@export_node_path("CharacterBody2D") var entityPath: NodePath
+@onready var entity: CharacterBody2D = get_node(entityPath)
+
+@export_node_path("AnimatedSprite2D") var spritePath: NodePath
+@onready var sprite: AnimatedSprite2D = get_node(spritePath)
+
+@export var SPEED: int
+
+const DIRECTIONS = [Vector2.UP, Vector2.RIGHT, Vector2.DOWN, Vector2.LEFT]
+var CURRENT_DIRECTION = Vector2.UP
+
+@onready var MovementTimer: Timer = Timer.new()
+
+
+func _ready():
+ MovementTimer.wait_time = 3.0
+ MovementTimer.autostart = true
+ MovementTimer.connect("timeout", Callable(_on_movement_timer_timeout))
+ add_child(MovementTimer)
+
+
+func physics_process(delta):
+ if CURRENT_DIRECTION == Vector2.UP:
+ entity.velocity.y -= SPEED
+ sprite.play("up")
+ elif CURRENT_DIRECTION == Vector2.DOWN:
+ entity.velocity.y += SPEED
+ sprite.play("down")
+ elif CURRENT_DIRECTION == Vector2.LEFT:
+ entity.velocity.x -= SPEED
+ sprite.play("left")
+ elif CURRENT_DIRECTION == Vector2.RIGHT:
+ entity.velocity.x += SPEED
+ sprite.play("right")
+
+ var collision = entity.move_and_collide(entity.velocity * delta)
+ entity.velocity = entity.velocity.lerp(Vector2(0, 0), 1)
+
+ return collision
+
+
+func _on_movement_timer_timeout():
+ var directions = DIRECTIONS.duplicate()
+
+ directions.remove_at(directions.find(CURRENT_DIRECTION))
+ directions.shuffle()
+
+ CURRENT_DIRECTION = directions[0]
+
+ emit_signal("direction_changed", CURRENT_DIRECTION)
+
+ MovementTimer.start()
diff --git a/Scenes/Entities/Enemies/Components/Movement.tscn b/Scenes/Entities/Enemies/Components/Movement.tscn
new file mode 100644
index 0000000..f3d5909
--- /dev/null
+++ b/Scenes/Entities/Enemies/Components/Movement.tscn
@@ -0,0 +1,6 @@
+[gd_scene load_steps=2 format=3 uid="uid://cq7yj2av01tqd"]
+
+[ext_resource type="Script" path="res://Scenes/Entities/Enemies/Components/Movement.gd" id="1_mtee1"]
+
+[node name="Movement" type="Node"]
+script = ExtResource("1_mtee1")
diff --git a/Scenes/Entities/Objects/Box.tscn b/Scenes/Entities/Objects/Box.tscn
index 6acb93f..c549618 100644
--- a/Scenes/Entities/Objects/Box.tscn
+++ b/Scenes/Entities/Objects/Box.tscn
@@ -6,22 +6,6 @@
[sub_resource type="RectangleShape2D" id="RectangleShape2D_rwppg"]
size = Vector2(16, 16)
-[sub_resource type="Animation" id="Animation_ihbs5"]
-resource_name = "breaking"
-length = 0.2
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.1, 0.2),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 1), Color(1, 1, 0, 1), Color(1, 0, 0, 1)]
-}
-
[sub_resource type="Animation" id="Animation_5u23n"]
length = 0.001
tracks/0/type = "bezier"
@@ -81,6 +65,22 @@ tracks/4/keys = {
"values": [Color(1, 1, 0, 1)]
}
+[sub_resource type="Animation" id="Animation_ihbs5"]
+resource_name = "breaking"
+length = 0.2
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Sprite2D:modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 1), Color(1, 1, 0, 1), Color(1, 0, 0, 1)]
+}
+
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cqvgo"]
_data = {
"RESET": SubResource("Animation_5u23n"),
@@ -96,6 +96,7 @@ script = ExtResource("1_owgyi")
shape = SubResource("RectangleShape2D_rwppg")
[node name="Sprite2D" type="Sprite2D" parent="."]
+modulate = Color(1, 1, 0, 1)
texture = ExtResource("1_yqw0v")
region_enabled = true
region_rect = Rect2(144.052, 208.08, 16, 16)
diff --git a/Scenes/Entities/Objects/Sign.gd b/Scenes/Entities/Objects/Sign.gd
new file mode 100644
index 0000000..9d83bab
--- /dev/null
+++ b/Scenes/Entities/Objects/Sign.gd
@@ -0,0 +1,20 @@
+extends StaticBody2D
+
+
+signal interacted
+
+var interaction_area: Area2D
+
+
+func _ready():
+ add_to_group("interactables")
+
+ interaction_area = Utilities.Collision.Area.new(self, $CollisionShape2D)
+ add_child(interaction_area)
+
+
+func _physics_process(_delta):
+ if Input.is_action_just_pressed("ui_accept") and interaction_area.has_overlapping_areas():
+ for area in interaction_area.get_overlapping_areas():
+ if area.is_in_group("player"):
+ emit_signal("interacted")
diff --git a/Scenes/Entities/Objects/Sign.tscn b/Scenes/Entities/Objects/Sign.tscn
new file mode 100644
index 0000000..847b768
--- /dev/null
+++ b/Scenes/Entities/Objects/Sign.tscn
@@ -0,0 +1,21 @@
+[gd_scene load_steps=4 format=3 uid="uid://gvsyy1b1pq53"]
+
+[ext_resource type="Script" path="res://Scenes/Entities/Objects/Sign.gd" id="1_gowid"]
+[ext_resource type="Texture2D" uid="uid://b6ce2eihxulqb" path="res://Assets/Stages/core_set pieces.png" id="2_us5wr"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_5hdba"]
+size = Vector2(14, 17)
+
+[node name="Sign" type="StaticBody2D"]
+collision_layer = 8
+collision_mask = 6
+script = ExtResource("1_gowid")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(0, 0.5)
+shape = SubResource("RectangleShape2D_5hdba")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture = ExtResource("2_us5wr")
+region_enabled = true
+region_rect = Rect2(208.674, 94.2419, 14.7292, 17.7021)
diff --git a/Scenes/Entities/Player.gd b/Scenes/Entities/Player.gd
index 12c5fc2..1994b75 100644
--- a/Scenes/Entities/Player.gd
+++ b/Scenes/Entities/Player.gd
@@ -30,6 +30,8 @@ var accumulated_bomb_wait_delta = 0
var bomb_wait_delta_mutiplier = 5
var DIRECTION = Vector2.DOWN
+var DIRECTIONS: Array = [Vector2.DOWN]
+var LAST_DIRECTIONS: Array = []
var collision_area: Area2D
@@ -71,49 +73,82 @@ func _process(delta):
self.just_planted_bomb = false
# self.just_planted_bomb = false
+ self.DIRECTIONS = []
if Input.is_action_pressed("ui_left"):
velocity.x -= SPEED
- $AnimatedSprite2D.play("left")
+ self.DIRECTIONS.append(Vector2.LEFT)
self.DIRECTION = Vector2.LEFT
if Input.is_action_pressed("ui_right"):
velocity.x += SPEED
- $AnimatedSprite2D.play("right")
+ self.DIRECTIONS.append(Vector2.RIGHT)
self.DIRECTION = Vector2.RIGHT
if Input.is_action_pressed("ui_up"):
velocity.y -= SPEED
- $AnimatedSprite2D.play("up")
+ self.DIRECTIONS.append(Vector2.UP)
self.DIRECTION = Vector2.UP
if Input.is_action_pressed("ui_down"):
velocity.y += SPEED
- $AnimatedSprite2D.play("down")
self.DIRECTION = Vector2.DOWN
+ self.DIRECTIONS.append(Vector2.DOWN)
- if velocity.x < 0 && velocity.y < 0:
- $AnimatedSprite2D.play("tl")
+ if velocity.x < 0 && velocity.y == 0:
+ $AnimatedSprite2D.play("left")
+ elif velocity.x > 0 && velocity.y == 0:
+ $AnimatedSprite2D.play("right")
+ elif velocity.x == 0 && velocity.y < 0:
+ $AnimatedSprite2D.play("up")
+ elif velocity.x == 0 && velocity.y > 0:
+ $AnimatedSprite2D.play("down")
+ elif velocity.x < 0 && velocity.y < 0:
+ $AnimatedSprite2D.play("top_left")
elif velocity.x > 0 && velocity.y < 0:
- $AnimatedSprite2D.play("tr")
+ $AnimatedSprite2D.play("top_right")
elif velocity.x < 0 && velocity.y > 0:
- $AnimatedSprite2D.play("bl")
+ $AnimatedSprite2D.play("bottom_left")
elif velocity.x > 0 && velocity.y > 0:
- $AnimatedSprite2D.play("br")
+ $AnimatedSprite2D.play("bottom_right")
+
+ else:
+ if self.LAST_DIRECTIONS == [Vector2.LEFT]:
+ $AnimatedSprite2D.play("idle_left")
+ elif self.LAST_DIRECTIONS == [Vector2.RIGHT]:
+ $AnimatedSprite2D.play("idle_right")
+ elif self.LAST_DIRECTIONS == [Vector2.UP]:
+ $AnimatedSprite2D.play("idle_up")
+ elif self.LAST_DIRECTIONS == [Vector2.DOWN]:
+ $AnimatedSprite2D.play("idle_down")
+ elif self.LAST_DIRECTIONS == [Vector2.LEFT, Vector2.UP]:
+ $AnimatedSprite2D.play("idle_top_left")
+ elif self.LAST_DIRECTIONS == [Vector2.RIGHT, Vector2.UP]:
+ $AnimatedSprite2D.play("idle_top_right")
+ elif self.LAST_DIRECTIONS == [Vector2.LEFT, Vector2.DOWN]:
+ $AnimatedSprite2D.play("idle_bottom_left")
+ elif self.LAST_DIRECTIONS == [Vector2.RIGHT, Vector2.DOWN]:
+ $AnimatedSprite2D.play("idle_bottom_right")
+
+ self.LAST_DIRECTIONS = self.DIRECTIONS
if Input.is_action_just_pressed("ui_accept"):
- if self.held_bomb:
- self.throw_bomb()
- else:
- var interacted = false
- var bomb = self.has_pickable_bomb()
- if bomb:
- self.pick_up_bomb(bomb)
- interacted = true
-
- if not interacted:
- if self.can_plant_bomb():
- self.plant_bomb()
- self.just_planted_bomb = true
- #$JustPlantedBomb.start()
+ if not self.is_in_interaction_area():
+ if self.held_bomb:
+ self.throw_bomb()
+ else:
+ var interacted = false
+ var bomb = self.has_pickable_bomb()
+ if bomb:
+ self.pick_up_bomb(bomb)
+ interacted = true
+
+ if not interacted:
+ if self.can_plant_bomb():
+ self.plant_bomb()
+ self.just_planted_bomb = true
+ #$JustPlantedBomb.start()
+
+ #self.collide(move_and_collide(velocity * delta))
+ move_and_slide()
+ self.collide(get_last_slide_collision())
- self.collide(move_and_collide(velocity * delta))
velocity = velocity.lerp(Vector2(0, 0), 1)
@@ -162,8 +197,8 @@ func pick_up_bomb(bomb: Bomb):
self.add_child(bomb)
self.held_bomb = bomb
- bomb.connect("exploded", func(bomb):
- if self.held_bomb == bomb:
+ bomb.connect("exploded", func(exploded_bomb):
+ if self.held_bomb == exploded_bomb:
self.held_bomb = null
)
@@ -247,6 +282,15 @@ func heal(amount: int):
self.emit_signal("health_changed", self.health)
+func is_in_interaction_area():
+ if collision_area.has_overlapping_areas():
+ for area in collision_area.get_overlapping_areas():
+ if area.is_in_group("interactables"):
+ return true
+
+ return false
+
+
func set_invincibility():
$Invincibility.start()
$AnimatedSprite2D.set_modulate(Color(10, 10, 10, 1))
diff --git a/Scenes/Entities/Player.tscn b/Scenes/Entities/Player.tscn
index 04d328f..d52e032 100644
--- a/Scenes/Entities/Player.tscn
+++ b/Scenes/Entities/Player.tscn
@@ -1,104 +1,257 @@
-[gd_scene load_steps=13 format=3 uid="uid://b1xhgqwrw4pgs"]
+[gd_scene load_steps=29 format=3 uid="uid://b1xhgqwrw4pgs"]
-[ext_resource type="Texture2D" uid="uid://dtvvpqc7i2dm6" path="res://Assets/tux/signal-2021-05-05-214118_001.png" id="1"]
[ext_resource type="Script" path="res://Scenes/Entities/Player.gd" id="1_2xulf"]
-[ext_resource type="Texture2D" uid="uid://o7x47dkwao04" path="res://Assets/tux/signal-2021-05-05-214118_002.png" id="2"]
-[ext_resource type="Texture2D" uid="uid://4lhw1rn7w1ye" path="res://Assets/tux/signal-2021-05-05-214118_003.png" id="3"]
-[ext_resource type="Texture2D" uid="uid://d354aghbycxto" path="res://Assets/tux/signal-2021-05-05-214118_004.png" id="4"]
-[ext_resource type="Texture2D" uid="uid://3jnv1c847c3" path="res://Assets/tux/signal-2021-05-06-203546_001.png" id="5"]
-[ext_resource type="Texture2D" uid="uid://c3o4wky2ywpng" path="res://Assets/tux/signal-2021-05-06-203546_004.png" id="6"]
-[ext_resource type="Texture2D" uid="uid://b5v0jg6lwnij2" path="res://Assets/tux/signal-2021-05-06-203546_003.png" id="7"]
-[ext_resource type="Texture2D" uid="uid://cnxxo0qivbv4c" path="res://Assets/tux/signal-2021-05-06-203546_002.png" id="7_bxbay"]
+[ext_resource type="Texture2D" uid="uid://c1lfciwp5n6wh" path="res://Assets/Character/Bomberman_bl_02.png" id="2_7c86j"]
+[ext_resource type="Texture2D" uid="uid://cwuyr6j4fowbn" path="res://Assets/Character/Bomberman_bl_01.png" id="3_frmop"]
+[ext_resource type="Texture2D" uid="uid://c17pybwy8uebb" path="res://Assets/Character/Bomberman_bl_03.png" id="4_viays"]
+[ext_resource type="Texture2D" uid="uid://d21ri773nni5x" path="res://Assets/Character/Bomberman_br_02.png" id="5_f3x6s"]
+[ext_resource type="Texture2D" uid="uid://cn844bbmb6ebw" path="res://Assets/Character/Bomberman_br_01.png" id="6_id2dl"]
+[ext_resource type="Texture2D" uid="uid://b4ajsycsqfy6b" path="res://Assets/Character/Bomberman_br_03.png" id="7_snc6l"]
+[ext_resource type="Texture2D" uid="uid://dcrvqjbr30piu" path="res://Assets/Character/Bomberman_down_02.png" id="8_6nrho"]
+[ext_resource type="Texture2D" uid="uid://llvrhcwdwyxq" path="res://Assets/Character/Bomberman_down_01.png" id="9_4r1t6"]
+[ext_resource type="Texture2D" uid="uid://dqgnibpodjph1" path="res://Assets/Character/Bomberman_down_03.png" id="10_0c5dt"]
+[ext_resource type="Texture2D" uid="uid://dsosylrax8qc0" path="res://Assets/Character/Bomberman_left_01.png" id="11_4vfbf"]
+[ext_resource type="Texture2D" uid="uid://dyrlofdra1jg" path="res://Assets/Character/Bomberman_right_01.png" id="12_b74y7"]
+[ext_resource type="Texture2D" uid="uid://b1ftykprnvmb2" path="res://Assets/Character/Bomberman_tl_01.png" id="13_t5fk2"]
+[ext_resource type="Texture2D" uid="uid://cpia0jdfix3v1" path="res://Assets/Character/Bomberman_tr_01.png" id="14_ank74"]
+[ext_resource type="Texture2D" uid="uid://cfxr2vqrydpxa" path="res://Assets/Character/Bomberman_up_01.png" id="15_an6q7"]
+[ext_resource type="Texture2D" uid="uid://rjsxm415e85y" path="res://Assets/Character/Bomberman_left_02.png" id="16_74r3r"]
+[ext_resource type="Texture2D" uid="uid://b2vn64asvfwpa" path="res://Assets/Character/Bomberman_left_03.png" id="17_am4b3"]
+[ext_resource type="Texture2D" uid="uid://cqc4sxd5jlog3" path="res://Assets/Character/Bomberman_right_02.png" id="18_au0ca"]
+[ext_resource type="Texture2D" uid="uid://da4ematmp08qs" path="res://Assets/Character/Bomberman_right_03.png" id="19_736tk"]
+[ext_resource type="Texture2D" uid="uid://c3gdllyr2gjwr" path="res://Assets/Character/Bomberman_tl_02.png" id="20_wtgma"]
+[ext_resource type="Texture2D" uid="uid://b7w657i2b8i7b" path="res://Assets/Character/Bomberman_tl_03.png" id="21_m2nht"]
+[ext_resource type="Texture2D" uid="uid://dtk5hkysfnsgk" path="res://Assets/Character/Bomberman_tr_02.png" id="22_kojwu"]
+[ext_resource type="Texture2D" uid="uid://b5535ungwxix7" path="res://Assets/Character/Bomberman_tr_03.png" id="23_fpo4g"]
+[ext_resource type="Texture2D" uid="uid://0pr3bb5cn5da" path="res://Assets/Character/Bomberman_up_02.png" id="24_tx0m0"]
+[ext_resource type="Texture2D" uid="uid://m2vf7nnhlatp" path="res://Assets/Character/Bomberman_up_03.png" id="25_6f86e"]
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_xsiww"]
-radius = 5.0
-height = 14.0
-
-[sub_resource type="SpriteFrames" id="2"]
+[sub_resource type="SpriteFrames" id="SpriteFrames_fu51i"]
animations = [{
"frames": [{
"duration": 1.0,
-"texture": ExtResource("7")
+"texture": ExtResource("2_7c86j")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_frmop")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_viays")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_frmop")
+}],
+"loop": true,
+"name": &"bottom_left",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("5_f3x6s")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_id2dl")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_snc6l")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_id2dl")
+}],
+"loop": true,
+"name": &"bottom_right",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("8_6nrho")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_4r1t6")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_0c5dt")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_4r1t6")
+}],
+"loop": true,
+"name": &"down",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_frmop")
}],
"loop": true,
-"name": &"bl",
+"name": &"idle_bottom_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("6")
+"texture": ExtResource("6_id2dl")
}],
"loop": true,
-"name": &"br",
+"name": &"idle_bottom_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("3")
+"texture": ExtResource("9_4r1t6")
}],
"loop": true,
-"name": &"down",
+"name": &"idle_down",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("4")
+"texture": ExtResource("11_4vfbf")
}],
"loop": true,
-"name": &"left",
+"name": &"idle_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("1")
+"texture": ExtResource("12_b74y7")
}],
"loop": true,
-"name": &"right",
+"name": &"idle_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("7_bxbay")
+"texture": ExtResource("13_t5fk2")
}],
"loop": true,
-"name": &"tl",
+"name": &"idle_top_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("5")
+"texture": ExtResource("14_ank74")
}],
"loop": true,
-"name": &"tr",
+"name": &"idle_top_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("2")
+"texture": ExtResource("15_an6q7")
}],
"loop": true,
-"name": &"up",
+"name": &"idle_up",
"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("16_74r3r")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_4vfbf")
+}, {
+"duration": 1.0,
+"texture": ExtResource("17_am4b3")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_4vfbf")
+}],
+"loop": true,
+"name": &"left",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("18_au0ca")
+}, {
+"duration": 1.0,
+"texture": ExtResource("12_b74y7")
+}, {
+"duration": 1.0,
+"texture": ExtResource("19_736tk")
+}, {
+"duration": 1.0,
+"texture": ExtResource("12_b74y7")
+}],
+"loop": true,
+"name": &"right",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("20_wtgma")
+}, {
+"duration": 1.0,
+"texture": ExtResource("13_t5fk2")
+}, {
+"duration": 1.0,
+"texture": ExtResource("21_m2nht")
+}, {
+"duration": 1.0,
+"texture": ExtResource("13_t5fk2")
+}],
+"loop": true,
+"name": &"top_left",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("22_kojwu")
+}, {
+"duration": 1.0,
+"texture": ExtResource("14_ank74")
+}, {
+"duration": 1.0,
+"texture": ExtResource("23_fpo4g")
+}, {
+"duration": 1.0,
+"texture": ExtResource("14_ank74")
+}],
+"loop": true,
+"name": &"top_right",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("24_tx0m0")
+}, {
+"duration": 1.0,
+"texture": ExtResource("15_an6q7")
+}, {
+"duration": 1.0,
+"texture": ExtResource("25_6f86e")
+}, {
+"duration": 1.0,
+"texture": ExtResource("15_an6q7")
+}],
+"loop": true,
+"name": &"up",
+"speed": 4.0
}]
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_xsiww"]
+radius = 5.0
+height = 13.0
+
[sub_resource type="RectangleShape2D" id="RectangleShape2D_c6666"]
size = Vector2(14, 14)
[node name="Player" type="CharacterBody2D"]
collision_layer = 2
collision_mask = 60
+motion_mode = 1
+wall_min_slide_angle = 1.5708
script = ExtResource("1_2xulf")
+[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
+scale = Vector2(0.8, 0.8)
+sprite_frames = SubResource("SpriteFrames_fu51i")
+animation = &"idle_down"
+
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(0, 1)
shape = SubResource("CapsuleShape2D_xsiww")
-[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
-position = Vector2(5.96046e-08, 5.96046e-08)
-scale = Vector2(0.405234, 0.405234)
-sprite_frames = SubResource("2")
-animation = &"down"
-metadata/_edit_lock_ = true
-
[node name="Camera2D" type="Camera2D" parent="."]
drag_horizontal_enabled = true
drag_vertical_enabled = true