diff --git a/Scenes/Enemies/slime_enemy.gd b/Scenes/Enemies/slime_enemy.gd new file mode 100644 index 0000000..c503eb4 --- /dev/null +++ b/Scenes/Enemies/slime_enemy.gd @@ -0,0 +1,32 @@ +extends CharacterBody2D + +@export var speed: int = 300 +var target: Node2D + +func _physics_process(delta): + if target: + animate_slime() + move_slime() + move_and_slide() + +func move_slime(): + var distance_to_player: Vector2 + distance_to_player = target.global_position - global_position + var direction_normal: Vector2 = distance_to_player.normalized() + velocity = direction_normal * speed + +func animate_slime(): + var normal_velocity: Vector2 = velocity.normalized() + if normal_velocity.x > 0.707: + $AnimatedSprite2D.play("move_right") + elif normal_velocity.x < -0.707: + $AnimatedSprite2D.play("move_left") + if normal_velocity.y > 0.707: + $AnimatedSprite2D.play("move_down") + elif normal_velocity.y < -0.707: + $AnimatedSprite2D.play("move_up") + + +func _on_player_detect_area_body_entered(body): + if body is Player: + target = body diff --git a/Scenes/Enemies/slime_enemy.gd.uid b/Scenes/Enemies/slime_enemy.gd.uid new file mode 100644 index 0000000..5c0d1fa --- /dev/null +++ b/Scenes/Enemies/slime_enemy.gd.uid @@ -0,0 +1 @@ +uid://b38dc40ei5ape diff --git a/Scenes/Enemies/slime_enemy.tscn b/Scenes/Enemies/slime_enemy.tscn index 154c220..6ba1035 100644 --- a/Scenes/Enemies/slime_enemy.tscn +++ b/Scenes/Enemies/slime_enemy.tscn @@ -1,5 +1,6 @@ [gd_scene format=3 uid="uid://c1ehbmaja4lpg"] +[ext_resource type="Script" uid="uid://b38dc40ei5ape" path="res://Scenes/Enemies/slime_enemy.gd" id="1_5uyk1"] [ext_resource type="Texture2D" uid="uid://cwejyda54idtw" path="res://Ninja Adventure - Asset Pack/Actor/Monsters/Slime/Slime.png" id="1_18say"] [sub_resource type="CircleShape2D" id="CircleShape2D_3rdvi"] @@ -9,6 +10,70 @@ radius = 6.0827627 atlas = ExtResource("1_18say") region = Rect2(0, 0, 16, 16) +[sub_resource type="AtlasTexture" id="AtlasTexture_5uyk1"] +atlas = ExtResource("1_18say") +region = Rect2(0, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_sv1en"] +atlas = ExtResource("1_18say") +region = Rect2(0, 16, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1u7tg"] +atlas = ExtResource("1_18say") +region = Rect2(0, 32, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jwhlm"] +atlas = ExtResource("1_18say") +region = Rect2(0, 48, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rh62s"] +atlas = ExtResource("1_18say") +region = Rect2(32, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n4i4n"] +atlas = ExtResource("1_18say") +region = Rect2(32, 16, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ld0qu"] +atlas = ExtResource("1_18say") +region = Rect2(32, 32, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cmhxm"] +atlas = ExtResource("1_18say") +region = Rect2(32, 48, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2tcdh"] +atlas = ExtResource("1_18say") +region = Rect2(48, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nqitv"] +atlas = ExtResource("1_18say") +region = Rect2(48, 16, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gf5l7"] +atlas = ExtResource("1_18say") +region = Rect2(48, 32, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1xypq"] +atlas = ExtResource("1_18say") +region = Rect2(48, 48, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n2bhi"] +atlas = ExtResource("1_18say") +region = Rect2(16, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_33pvu"] +atlas = ExtResource("1_18say") +region = Rect2(16, 16, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mek6i"] +atlas = ExtResource("1_18say") +region = Rect2(16, 32, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hiyn6"] +atlas = ExtResource("1_18say") +region = Rect2(16, 48, 16, 16) + [sub_resource type="SpriteFrames" id="SpriteFrames_chgu2"] animations = [{ "frames": [{ @@ -18,10 +83,84 @@ animations = [{ "loop": 1, "name": &"default", "speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_5uyk1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_sv1en") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1u7tg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jwhlm") +}], +"loop": 1, +"name": &"move_down", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_rh62s") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n4i4n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ld0qu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cmhxm") +}], +"loop": 1, +"name": &"move_left", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_2tcdh") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_nqitv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gf5l7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1xypq") +}], +"loop": 1, +"name": &"move_right", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_n2bhi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_33pvu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mek6i") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hiyn6") +}], +"loop": 1, +"name": &"move_up", +"speed": 5.0 }] +[sub_resource type="CircleShape2D" id="CircleShape2D_chgu2"] +radius = 60.0 + [node name="SlimeEnemy" type="CharacterBody2D" unique_id=384578683] collision_layer = 16 +motion_mode = 1 +script = ExtResource("1_5uyk1") +speed = 50 [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=627034710] position = Vector2(0, 2) @@ -29,3 +168,15 @@ shape = SubResource("CircleShape2D_3rdvi") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1489783052] sprite_frames = SubResource("SpriteFrames_chgu2") +animation = &"move_up" +autoplay = "default" + +[node name="PlayerDetectArea" type="Area2D" parent="." unique_id=2126126428] +collision_layer = 16 +collision_mask = 3 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerDetectArea" unique_id=1018550471] +shape = SubResource("CircleShape2D_chgu2") +debug_color = Color(0.19248506, 0.64210063, 0, 0.41960785) + +[connection signal="body_entered" from="PlayerDetectArea" to="." method="_on_player_detect_area_body_entered"] diff --git a/Scenes/GameScene/game_scene.tscn b/Scenes/GameScene/game_scene.tscn index c7db7e9..30e420e 100644 --- a/Scenes/GameScene/game_scene.tscn +++ b/Scenes/GameScene/game_scene.tscn @@ -803,6 +803,16 @@ tile_set = SubResource("TileSet_bqpwv") tile_map_data = PackedByteArray("AAD/////AAAMAAgAAAD//wAAAAAMAAgAAAD//wEAAAAMAAgAAAD//wIAAAAMAAgAAAD//wMAAAAMAAgAAAAAAP//AAAMAAgAAAAAAAAAAAAMAAgAAAAAAAEAAAAMAAgAAAAAAAIAAAAMAAgAAAAAAAMAAAAQAAgAAAD+/wQAAAARAAkAAAD+/wUAAAAMAAgAAAD//wQAAAAMAAgAAAD//wUAAAAMAAgAAAAAAAQAAAANAAgAAAD+/wYAAAAMAAgAAAD+/wcAAAAMAAgAAAD+/wgAAAAMAAgAAAD+/wkAAAAMAAgAAAD//wYAAAAMAAgAAAD//wcAAAAMAAgAAAD//wgAAAAMAAgAAAD//wkAAAAMAAgAAAAAAP3/AAAMAAgAAAAAAP7/AAAMAAgAAAABAP3/AAAMAAgAAAABAP7/AAAMAAgAAAACAP3/AAAMAAgAAAACAP7/AAAMAAgAAAADAP3/AAAMAAgAAAADAP7/AAAMAAgAAAAEAP3/AAAMAAgAAAAEAP7/AAAMAAgAAAAFAP3/AAAMAAgAAAAFAP7/AAAMAAgAAAAFAPv/AAALAAgAAAAFAPz/AAARAAkAAAAGAPv/AAAMAAgAAAAGAPz/AAAMAAgAAAAGAP3/AAAQAAgAAAAGAPr/AAAMAAgAAAAHAPr/AAAMAAgAAAAHAPv/AAAMAAgAAAAIAPr/AAAMAAgAAAAIAPv/AAAMAAgAAAAJAPr/AAAMAAgAAAAJAPv/AAAMAAgAAAAKAPr/AAAMAAgAAAAKAPv/AAAMAAgAAAALAPr/AAAQAAsAAAALAPv/AAANAAgAAAD9//3/AAAMAAgAAAD9//7/AAARAAgAAAD+//3/AAAMAAgAAAD+//7/AAAMAAgAAAD///3/AAAMAAgAAAD///7/AAAMAAgAAAD7//v/AAAMAAgAAAD7//z/AAARAAgAAAD7//3/AAALAAgAAAD8//v/AAAMAAgAAAD8//z/AAAMAAgAAAD8//3/AAAMAAgAAAD0//r/AAALAAgAAAD0//v/AAALAAgAAAD1//r/AAAMAAgAAAD1//v/AAAMAAgAAAD2//r/AAAMAAgAAAD2//v/AAAMAAgAAAD3//r/AAAMAAgAAAD3//v/AAAMAAgAAAD4//r/AAAMAAgAAAD4//v/AAAMAAgAAAD5//r/AAAMAAgAAAD5//v/AAAMAAgAAAD6//r/AAAMAAgAAAD6//v/AAAMAAgAAAD7//r/AAAMAAgAAAD8//r/AAAMAAgAAAAGAAMAAAANAAkAAAAGAAIAAAANAAgAAAAGAAEAAAANAAgAAAAGAAAAAAANAAgAAAAGAP//AAANAAgAAAAGAP7/AAANAAgAAAAFAAMAAAAMAAkAAAAFAAIAAAAMAAgAAAAFAAEAAAAMAAgAAAAFAAAAAAAMAAgAAAAFAP//AAAMAAgAAAAEAAMAAAAMAAkAAAAEAAIAAAAMAAgAAAAEAAEAAAAMAAgAAAAEAAAAAAAMAAgAAAAEAP//AAAMAAgAAAADAAMAAAAMAAkAAAADAAIAAAAMAAgAAAADAAEAAAAMAAgAAAADAAAAAAAMAAgAAAADAP//AAAMAAgAAAACAAMAAAAMAAkAAAACAAIAAAAMAAgAAAACAAEAAAAMAAgAAAACAAAAAAAMAAgAAAACAP//AAAMAAgAAAABAAMAAAAMAAkAAAABAAIAAAAMAAgAAAABAAEAAAAMAAgAAAABAAAAAAAMAAgAAAABAP//AAAMAAgAAAALAP3/AAANAAkAAAALAPz/AAANAAgAAAAKAP3/AAAMAAkAAAAKAPz/AAAMAAgAAAAJAP3/AAAMAAkAAAAJAPz/AAAMAAgAAAAIAP3/AAAMAAkAAAAIAPz/AAAMAAgAAAAHAP3/AAAMAAkAAAAHAPz/AAAMAAgAAAALAPn/AAANAAgAAAALAPj/AAANAAgAAAALAPf/AAANAAcAAAAKAPn/AAAMAAgAAAAKAPj/AAAMAAgAAAAKAPf/AAAMAAcAAAAJAPn/AAAMAAgAAAAJAPj/AAAMAAgAAAAJAPf/AAAMAAcAAAAIAPn/AAAMAAgAAAAIAPj/AAAMAAgAAAAIAPf/AAAMAAcAAAAHAPn/AAAMAAgAAAAHAPj/AAAMAAgAAAAHAPf/AAAMAAcAAAAGAPn/AAAMAAgAAAAGAPj/AAAMAAgAAAAGAPf/AAAMAAcAAAAFAPr/AAARAAgAAAAFAPn/AAAMAAgAAAAFAPj/AAAMAAgAAAAFAPf/AAAMAAcAAAAEAPr/AAALAAkAAAAEAPn/AAALAAgAAAAEAPj/AAALAAgAAAAEAPf/AAALAAcAAAAEAPz/AAAMAAcAAAADAPz/AAAMAAcAAAACAPz/AAAMAAcAAAABAPz/AAAMAAcAAAAAAPz/AAAMAAcAAAD///z/AAAMAAcAAAD+//z/AAAMAAcAAAD9//z/AAAQAAkAAAD9//v/AAANAAgAAAD9//r/AAANAAgAAAD9//n/AAANAAcAAAD8//n/AAAMAAcAAAD7//n/AAAMAAcAAAD6//n/AAAMAAcAAAD5//n/AAAMAAcAAAD4//n/AAAMAAcAAAD3//n/AAAMAAcAAAD2//n/AAAMAAcAAAD6//z/AAAMAAkAAAD5//z/AAAMAAkAAAD4//z/AAAMAAkAAAD3//z/AAAMAAkAAAD2//z/AAAMAAkAAAD8//7/AAAMAAkAAAD7//7/AAALAAkAAAD+////AAARAAgAAAD9////AAALAAkAAAD+/wMAAAALAAgAAAD+/wIAAAALAAgAAAD+/wEAAAALAAgAAAD+/wAAAAALAAgAAAD9/wkAAAALAAkAAAD9/wgAAAALAAgAAAD9/wcAAAALAAgAAAD9/wYAAAALAAgAAAD9/wUAAAALAAgAAAD9/wQAAAALAAcAAAAAAAkAAAANAAkAAAAAAAgAAAANAAgAAAAAAAcAAAAQAAgAAAAAAAYAAAAQAAkAAAAAAAUAAAANAAgAAAD1//n/AAAMAAcAAAD0//n/AAALAAcAAAD0//z/AAAPAAgAAAD0//3/AAAOAAkAAAD1//z/AAAMAAkAAAAHAAcAAAANAAoAAAAGAAcAAAAMAAoAAAAFAAcAAAAMAAoAAAAEAAcAAAAMAAoAAAADAAcAAAAMAAoAAAACAAcAAAAMAAoAAAABAAcAAAAQAAoAAAABAAYAAAANAAcAAAA=") tile_set = SubResource("TileSet_bqpwv") +[node name="Player" parent="." unique_id=1991398375 instance=ExtResource("1_2p8i2")] +push_strength = 100 + +[node name="Camera2D" type="Camera2D" parent="Player" unique_id=1335060572] +zoom = Vector2(5, 5) +limit_left = -192 +limit_top = -144 +limit_right = 192 +limit_bottom = 160 + [node name="PuzzleButton" parent="." unique_id=125477561 instance=ExtResource("7_ohrk8")] position = Vector2(183, -86) @@ -834,16 +844,6 @@ text = "Green Ninja" [node name="Switch" parent="ObstacleLayer" unique_id=78052327 instance=ExtResource("8_njm7v")] position = Vector2(-8, -26) -[node name="Player" parent="ObstacleLayer" unique_id=1991398375 instance=ExtResource("1_2p8i2")] -push_strength = 100 - -[node name="Camera2D" type="Camera2D" parent="ObstacleLayer/Player" unique_id=1335060572] -zoom = Vector2(5, 5) -limit_left = -192 -limit_top = -144 -limit_right = 192 -limit_bottom = 160 - [node name="TreasureChest" parent="ObstacleLayer" unique_id=2069908436 instance=ExtResource("9_bkvnf")] position = Vector2(-41, -19) @@ -854,7 +854,7 @@ position = Vector2(15, -19) position = Vector2(-79, -19) [node name="SlimeEnemy" parent="ObstacleLayer" unique_id=384578683 instance=ExtResource("10_6dkqd")] -position = Vector2(-26, 4) +position = Vector2(-77, 11) [node name="SceneEntrance" parent="." unique_id=1734357035 instance=ExtResource("5_oi8ly")] position = Vector2(137, -107) diff --git a/Scenes/Player/player.tscn b/Scenes/Player/player.tscn index 230f65e..f117b7d 100644 --- a/Scenes/Player/player.tscn +++ b/Scenes/Player/player.tscn @@ -255,7 +255,7 @@ animations = [{ }] [sub_resource type="RectangleShape2D" id="RectangleShape2D_3rdvi"] -size = Vector2(10, 13) +size = Vector2(8, 13) [sub_resource type="Animation" id="Animation_gk6dx"] length = 0.001 @@ -480,8 +480,7 @@ collision_mask = 16 monitoring = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Sword/SwordArea2D" unique_id=1964142758] -visible = false -position = Vector2(-4.927303e-07, 0.5) +position = Vector2(0, 0.5) shape = SubResource("RectangleShape2D_3rdvi") debug_color = Color(0.6497558, 0.52038795, 0, 0.41960785)