diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-04-14 21:49:20 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-04-14 21:49:20 +0200 |
commit | f27937e6e9b6a7146dd09fc711d2d293ecf5abbf (patch) | |
tree | e0ddd5e6d356000e4f29af6211a736284a4972ee /Scenes/Entities | |
parent | 96d36cee33d6321834565f0a5d412ef95c5ceffd (diff) |
update
Diffstat (limited to 'Scenes/Entities')
-rw-r--r-- | Scenes/Entities/Enemies/Balloon.gd | 43 | ||||
-rw-r--r-- | Scenes/Entities/Enemies/Balloon.tscn | 123 | ||||
-rw-r--r-- | Scenes/Entities/Enemies/Components/Collision.gd | 18 | ||||
-rw-r--r-- | Scenes/Entities/Enemies/Components/Collision.tscn | 6 | ||||
-rw-r--r-- | Scenes/Entities/Enemies/Components/Movement.gd | 56 | ||||
-rw-r--r-- | Scenes/Entities/Enemies/Components/Movement.tscn | 6 | ||||
-rw-r--r-- | Scenes/Entities/Objects/Box.tscn | 33 | ||||
-rw-r--r-- | Scenes/Entities/Objects/Sign.gd | 20 | ||||
-rw-r--r-- | Scenes/Entities/Objects/Sign.tscn | 21 | ||||
-rw-r--r-- | Scenes/Entities/Player.gd | 96 | ||||
-rw-r--r-- | Scenes/Entities/Player.tscn | 227 |
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 |