mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-09 19:25:54 +00:00
Merge branch 'master' of gitlab.com:MaddoScientisto/cirnogodot
This commit is contained in:
commit
4dbbb00115
42 changed files with 1089 additions and 367 deletions
14
Resources/Items/Ammo1.tres
Normal file
14
Resources/Items/Ammo1.tres
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
[gd_resource type="Resource" script_class="LootItem" load_steps=3 format=3 uid="uid://ct1fa2huvy34n"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_31o2l"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="1_fubhk"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_31o2l")
|
||||
Item = 3
|
||||
Amount = 100
|
||||
Max = 800
|
||||
PickupIfMaxed = false
|
||||
ConsumeOnUse = false
|
||||
InventorySprite = ExtResource("1_fubhk")
|
||||
WorldSprite = ExtResource("1_fubhk")
|
||||
11
Resources/Items/Ammo1.tscn
Normal file
11
Resources/Items/Ammo1.tscn
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://j1pbuvw2kduo"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_v0ux4"]
|
||||
[ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="2_2eoli"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="2_8g7mw"]
|
||||
|
||||
[node name="Ammo1" instance=ExtResource("1_v0ux4")]
|
||||
LootTable = [ExtResource("2_2eoli")]
|
||||
|
||||
[node name="AnimatedSprite2D" parent="." index="1"]
|
||||
sprite_frames = ExtResource("2_8g7mw")
|
||||
9
Resources/Items/Blue_Keycard.tres
Normal file
9
Resources/Items/Blue_Keycard.tres
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://cj5aa7btaw6q0"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_k8cnp"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_k8cnp")
|
||||
Item = 1
|
||||
Amount = 1
|
||||
Max = 1
|
||||
9
Resources/Items/Green_Keycard.tres
Normal file
9
Resources/Items/Green_Keycard.tres
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://cspcgkr0tane2"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_t0s5w"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_t0s5w")
|
||||
Item = 2
|
||||
Amount = 1
|
||||
Max = 1
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://dibquna7fww7t"]
|
||||
[gd_resource type="Resource" script_class="LootItem" load_steps=4 format=3 uid="uid://dibquna7fww7t"]
|
||||
|
||||
[ext_resource type="SpriteFrames" uid="uid://cikw4v6n0folb" path="res://Resources/Sprites/Red_Keycard_Overworld_Sprite.tres" id="1_1j6xs"]
|
||||
[ext_resource type="Texture2D" uid="uid://bao53hesxreoh" path="res://Resources/Sprites/Red_Keycard_Inventory_Texture.tres" id="1_glhfu"]
|
||||
[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_istlt"]
|
||||
|
||||
[resource]
|
||||
|
|
@ -7,3 +9,7 @@ script = ExtResource("1_istlt")
|
|||
Item = 0
|
||||
Amount = 1
|
||||
Max = 1
|
||||
PickupIfMaxed = false
|
||||
ConsumeOnUse = false
|
||||
InventorySprite = ExtResource("1_glhfu")
|
||||
WorldSprite = ExtResource("1_1j6xs")
|
||||
|
|
|
|||
18
Resources/Sprites/Ammo_Inventory_Sprite.tres
Normal file
18
Resources/Sprites/Ammo_Inventory_Sprite.tres
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
[gd_resource type="SpriteFrames" load_steps=3 format=3 uid="uid://pmwatoyt2ase"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://c5g0qg6u2gm6f" path="res://Sprites/Items/Ammo1.png" id="1_opgo2"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0k673"]
|
||||
atlas = ExtResource("1_opgo2")
|
||||
region = Rect2(0, 0, 16, 16)
|
||||
|
||||
[resource]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0k673")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
18
Resources/Sprites/Red_Keycard_Inventory_Sprite.tres
Normal file
18
Resources/Sprites/Red_Keycard_Inventory_Sprite.tres
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
[gd_resource type="SpriteFrames" load_steps=3 format=3 uid="uid://bnvusxrrd2351"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://c53bchw2krocb" path="res://Sprites/Red_Keycard.png" id="1_l8v2c"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_us62y"]
|
||||
atlas = ExtResource("1_l8v2c")
|
||||
region = Rect2(0, 0, 16, 16)
|
||||
|
||||
[resource]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_us62y")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
7
Resources/Sprites/Red_Keycard_Inventory_Texture.tres
Normal file
7
Resources/Sprites/Red_Keycard_Inventory_Texture.tres
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://bao53hesxreoh"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bad6gbl2gity3" path="res://Sprites/Items/RedKeycard_Small.png" id="1_eer7d"]
|
||||
|
||||
[resource]
|
||||
atlas = ExtResource("1_eer7d")
|
||||
region = Rect2(0, 0, 16.0056, 16)
|
||||
25
Resources/Sprites/Red_Keycard_Overworld_Sprite.tres
Normal file
25
Resources/Sprites/Red_Keycard_Overworld_Sprite.tres
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
[gd_resource type="SpriteFrames" load_steps=4 format=3 uid="uid://cikw4v6n0folb"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bad6gbl2gity3" path="res://Sprites/Items/RedKeycard_Small.png" id="1_shn5c"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_o0au0"]
|
||||
atlas = ExtResource("1_shn5c")
|
||||
region = Rect2(0, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fx6tu"]
|
||||
atlas = ExtResource("1_shn5c")
|
||||
region = Rect2(16, 0, 16, 16)
|
||||
|
||||
[resource]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_o0au0")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_fx6tu")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://v8s3kubgb2qg"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://v8s3kubgb2qg"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://b4ynnb14mb4uq" path="res://Sprites/Reisen.png" id="1_4w8mj"]
|
||||
[ext_resource type="Script" path="res://Scripts/Enemy.cs" id="1_lpwdj"]
|
||||
|
|
@ -18,11 +18,15 @@ radius = 4.0
|
|||
[sub_resource type="CircleShape2D" id="CircleShape2D_v711r"]
|
||||
radius = 85.0529
|
||||
|
||||
[node name="Enemy" type="Area2D" node_paths=PackedStringArray("EquippedWeapon") groups=["Destroyable"]]
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_m1rsg"]
|
||||
size = Vector2(8, 12)
|
||||
|
||||
[node name="Enemy" type="CharacterBody2D" node_paths=PackedStringArray("EquippedWeapon") groups=["Destroyable"]]
|
||||
collision_layer = 16
|
||||
collision_mask = 9
|
||||
script = ExtResource("1_lpwdj")
|
||||
EquippedWeapon = NodePath("Weapon")
|
||||
NavigationEnabled = true
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
|
|
@ -33,6 +37,7 @@ visible = false
|
|||
shape = SubResource("CircleShape2D_8gtts")
|
||||
|
||||
[node name="RigidBody2D" type="RigidBody2D" parent="."]
|
||||
collision_layer = 16
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D"]
|
||||
visible = false
|
||||
|
|
@ -40,11 +45,11 @@ position = Vector2(0, 5)
|
|||
shape = SubResource("CircleShape2D_cacb5")
|
||||
|
||||
[node name="PlayerDetection" type="Area2D" parent="."]
|
||||
visible = false
|
||||
collision_layer = 16
|
||||
collision_mask = 2
|
||||
|
||||
[node name="PlayerDetectionArea" type="CollisionShape2D" parent="PlayerDetection"]
|
||||
visible = false
|
||||
shape = SubResource("CircleShape2D_v711r")
|
||||
|
||||
[node name="ShootTimer" type="Timer" parent="."]
|
||||
|
|
@ -57,7 +62,21 @@ BulletCapacity = 4
|
|||
BulletSpeed = 50.0
|
||||
|
||||
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="."]
|
||||
target_desired_distance = 64.0
|
||||
path_max_distance = 800.0
|
||||
path_postprocessing = 1
|
||||
avoidance_enabled = true
|
||||
debug_enabled = true
|
||||
debug_path_custom_color = Color(1, 0, 0, 1)
|
||||
|
||||
[node name="DamageHitbox" type="Area2D" parent="."]
|
||||
collision_layer = 16
|
||||
collision_mask = 9
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageHitbox"]
|
||||
shape = SubResource("RectangleShape2D_m1rsg")
|
||||
|
||||
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
|
||||
[connection signal="area_entered" from="PlayerDetection" to="." method="_on_player_detection_area_entered"]
|
||||
[connection signal="area_exited" from="PlayerDetection" to="." method="_on_player_detection_area_exited"]
|
||||
[connection signal="velocity_computed" from="NavigationAgent2D" to="." method="_on_navigation_agent_2d_velocity_computed"]
|
||||
[connection signal="area_entered" from="DamageHitbox" to="." method="_on_damage_hitbox_area_entered"]
|
||||
|
|
|
|||
|
|
@ -26,21 +26,10 @@ animations = [{
|
|||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[node name="HUD" type="CanvasLayer"]
|
||||
[node name="HUD" type="CanvasLayer" node_paths=PackedStringArray("_healthLabel", "_itemsContainer")]
|
||||
script = ExtResource("1_m0hb0")
|
||||
|
||||
[node name="HealthLabel" type="Label" parent="."]
|
||||
anchors_preset = 2
|
||||
anchor_top = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = 1.0
|
||||
offset_top = -160.0
|
||||
offset_right = 306.0
|
||||
offset_bottom = -82.0
|
||||
grow_vertical = 0
|
||||
theme_override_fonts/font = ExtResource("2_0xmx2")
|
||||
theme_override_font_sizes/font_size = 12
|
||||
text = "100/100"
|
||||
_healthLabel = NodePath("VBoxContainer/HealthLabel")
|
||||
_itemsContainer = NodePath("VBoxContainer/ItemsContainer")
|
||||
|
||||
[node name="GameOver" type="Label" parent="."]
|
||||
visible = false
|
||||
|
|
@ -69,3 +58,24 @@ position = Vector2(67, 47)
|
|||
sprite_frames = SubResource("SpriteFrames_78fwv")
|
||||
frame = 1
|
||||
frame_progress = 0.8514
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="HealthLabel" type="Label" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("2_0xmx2")
|
||||
theme_override_font_sizes/font_size = 12
|
||||
text = "100/100"
|
||||
|
||||
[node name="ItemsContainer" type="VBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="VBoxContainer/ItemsContainer"]
|
||||
layout_mode = 2
|
||||
|
|
|
|||
11
Scenes/Items/Ammo1.tscn
Normal file
11
Scenes/Items/Ammo1.tscn
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://cmr6fclttrpkb"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_i3l7m"]
|
||||
[ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="2_j10i4"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="3_6n103"]
|
||||
|
||||
[node name="Ammo1" instance=ExtResource("1_i3l7m")]
|
||||
LootTable = [ExtResource("2_j10i4")]
|
||||
|
||||
[node name="AnimatedSprite2D" parent="." index="1"]
|
||||
sprite_frames = ExtResource("3_6n103")
|
||||
33
Scenes/Items/Blue_Keycard.tscn
Normal file
33
Scenes/Items/Blue_Keycard.tscn
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://d0yes7huiyisw"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_8f4hq"]
|
||||
[ext_resource type="Resource" uid="uid://cj5aa7btaw6q0" path="res://Resources/Items/Blue_Keycard.tres" id="2_woclw"]
|
||||
[ext_resource type="Texture2D" uid="uid://bvybqletsvqgk" path="res://Sprites/Items/BlueKeycard_Small.png" id="3_k20dr"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_kprwo"]
|
||||
atlas = ExtResource("3_k20dr")
|
||||
region = Rect2(0, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_kems3"]
|
||||
atlas = ExtResource("3_k20dr")
|
||||
region = Rect2(16, 0, 16, 16)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_gbw5v"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_kprwo")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_kems3")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[node name="BlueKeycard" instance=ExtResource("1_8f4hq")]
|
||||
LootTable = [ExtResource("2_woclw")]
|
||||
|
||||
[node name="AnimatedSprite2D" parent="." index="1"]
|
||||
sprite_frames = SubResource("SpriteFrames_gbw5v")
|
||||
31
Scenes/Items/Green_Keycard.tscn
Normal file
31
Scenes/Items/Green_Keycard.tscn
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://r25rq6ijgm6m"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_o26qb"]
|
||||
[ext_resource type="Texture2D" uid="uid://bvkjnc3ggp7ba" path="res://Sprites/Items/GreenKeycard_Small.png" id="2_lts72"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3c71u"]
|
||||
atlas = ExtResource("2_lts72")
|
||||
region = Rect2(0, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_tdlc7"]
|
||||
atlas = ExtResource("2_lts72")
|
||||
region = Rect2(16, 0, 16, 16)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_y8q6b"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_3c71u")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_tdlc7")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[node name="GreenKeyCard" instance=ExtResource("1_o26qb")]
|
||||
|
||||
[node name="AnimatedSprite2D" parent="." index="1"]
|
||||
sprite_frames = SubResource("SpriteFrames_y8q6b")
|
||||
19
Scenes/Items/Red_Keycard.tscn
Normal file
19
Scenes/Items/Red_Keycard.tscn
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://dxs3ks2ucaxl4"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Interactables/ItemPickup.cs" id="1_cvvxn"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://cikw4v6n0folb" path="res://Resources/Sprites/Red_Keycard_Overworld_Sprite.tres" id="3_htu4x"]
|
||||
[ext_resource type="Resource" uid="uid://dibquna7fww7t" path="res://Resources/Items/Red_Keycard.tres" id="4_84krq"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_6vv2s"]
|
||||
|
||||
[node name="RedKeyCard" type="Area2D" groups=["Interactable"]]
|
||||
collision_layer = 4
|
||||
collision_mask = 2
|
||||
script = ExtResource("1_cvvxn")
|
||||
LootTable = [ExtResource("4_84krq")]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("CircleShape2D_6vv2s")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||
sprite_frames = ExtResource("3_htu4x")
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://dxs3ks2ucaxl4"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scenes/Interactable.cs" id="1_8ev2v"]
|
||||
[ext_resource type="Texture2D" uid="uid://c53bchw2krocb" path="res://Sprites/Red_Keycard.png" id="2_onmup"]
|
||||
[ext_resource type="Script" path="res://Scripts/Pickupper.cs" id="3_t6rqq"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_x0adl"]
|
||||
|
||||
[node name="ControlPad" type="Area2D" groups=["Interactable"]]
|
||||
collision_layer = 4
|
||||
collision_mask = 2
|
||||
script = ExtResource("1_8ev2v")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_x0adl")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("2_onmup")
|
||||
|
||||
[node name="Pickupper" type="Node2D" parent="."]
|
||||
script = ExtResource("3_t6rqq")
|
||||
|
|
@ -11,6 +11,7 @@ collision_layer = 8
|
|||
collision_mask = 85
|
||||
script = ExtResource("1_jvxw3")
|
||||
Speed = 200.0
|
||||
Owner = 1
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ collision_layer = 128
|
|||
collision_mask = 71
|
||||
script = ExtResource("1_s0j1e")
|
||||
Speed = 200.0
|
||||
Owner = 2
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
|
|
|
|||
75
Scenes/naviogation_test.tscn
Normal file
75
Scenes/naviogation_test.tscn
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
[gd_scene load_steps=10 format=4 uid="uid://c4yvclwjr2g3s"]
|
||||
|
||||
[ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="1_0ej5m"]
|
||||
[ext_resource type="Script" path="res://Scripts/TilemapAvoidance.cs" id="2_8fanf"]
|
||||
[ext_resource type="Texture2D" uid="uid://b4ynnb14mb4uq" path="res://Sprites/Reisen.png" id="2_jwyql"]
|
||||
[ext_resource type="Script" path="res://Scripts/Actors/NavigationTestEnemy.cs" id="2_ow6o3"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_uexe4"]
|
||||
radius = 6.0
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_dbu6i"]
|
||||
atlas = ExtResource("2_jwyql")
|
||||
region = Rect2(0, 0, 8, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gx747"]
|
||||
atlas = ExtResource("2_jwyql")
|
||||
region = Rect2(8, 0, 8, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_yqxl3"]
|
||||
atlas = ExtResource("2_jwyql")
|
||||
region = Rect2(16, 0, 8, 16)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_s36lq"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_dbu6i")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_gx747")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_yqxl3")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
|
||||
[node name="Floor" type="TileMapLayer" parent="." node_paths=PackedStringArray("_solidLayer")]
|
||||
tile_map_data = PackedByteArray("AAAHAAIAAAAAAAEAAAAHAAMAAAAAAAEAAAAIAAMAAAAAAAEAAAAIAAQAAAAAAAEAAAAIAAUAAAAAAAEAAAAHAAUAAAAAAAEAAAAGAAUAAAAAAAEAAAAFAAQAAAAAAAEAAAAGAAIAAAAAAAEAAAAIAAIAAAACAAMAAAAJAAMAAAAAAAEAAAAJAAQAAAAAAAEAAAAJAAUAAAAGAAEAAAAHAAQAAAAAAAEAAAAKAAMAAAAAAAEAAAAKAAQAAAAAAAEAAAAIAAYAAAAGAAEAAAAHAAYAAAAAAAEAAAAGAAYAAAAAAAEAAAALAAQAAAAAAAEAAAAKAAUAAAAGAAEAAAAGAAQAAAAAAAEAAAAGAAcAAAAAAAMAAAAHAAcAAAAAAAMAAAAIAAcAAAAGAAEAAAAJAAcAAAAGAAEAAAAKAAcAAAAGAAEAAAALAAcAAAAGAAEAAAAMAAcAAAAAAAMAAAALAAUAAAAAAAMAAAAMAAUAAAAAAAMAAAAMAAQAAAAAAAMAAAAMAAMAAAACAAMAAAANAAYAAAAAAAMAAAANAAUAAAAAAAMAAAANAAQAAAAAAAMAAAANAAMAAAAAAAMAAAANAAIAAAAAAAMAAAANAAcAAAAAAAMAAAANAAgAAAACAAMAAAAMAAgAAAACAAMAAAALAAgAAAACAAMAAAAKAAgAAAAGAAEAAAAJAAgAAAAGAAEAAAAIAAgAAAACAAMAAAAHAAgAAAACAAMAAAAGAAgAAAACAAMAAAAGAAkAAAACAAMAAAAHAAkAAAACAAMAAAAHAAoAAAACAAMAAAAIAAoAAAACAAMAAAAIAAkAAAACAAMAAAAJAAkAAAACAAMAAAAKAAkAAAACAAMAAAALAAkAAAACAAMAAAAMAAkAAAACAAMAAAANAAkAAAACAAMAAAAMAAoAAAACAAMAAAALAAoAAAACAAMAAAAKAAoAAAACAAMAAAAJAAoAAAACAAMAAAAGAAoAAAACAAMAAAAJAAsAAAACAAMAAAAKAAsAAAACAAMAAAALAAsAAAACAAMAAAAMAAsAAAACAAMAAAANAAoAAAACAAMAAAADAAgAAAAAAAMAAAAFAAoAAAACAAMAAAAEAAoAAAACAAMAAAADAAoAAAACAAMAAAACAAoAAAAAAAMAAAACAAsAAAACAAMAAAACAAwAAAACAAMAAAACAA0AAAACAAMAAAABAA0AAAACAAMAAAABAA4AAAACAAMAAAAFAAYAAAAAAAMAAAAFAAcAAAAAAAMAAAAFAAgAAAAAAAMAAAAEAAgAAAAAAAMAAAAEAAcAAAAAAAMAAAAEAAYAAAAAAAMAAAAFAAUAAAAAAAMAAAAEAAUAAAAAAAMAAAAEAAQAAAAAAAMAAAAEAAMAAAACAAMAAAAEAAkAAAAAAAMAAAADAAkAAAAAAAMAAAAFAAkAAAAAAAMAAAACAAMAAAAAAAMAAAACAAQAAAAAAAMAAAACAAUAAAAAAAMAAAACAAYAAAAAAAMAAAACAAcAAAAAAAMAAAACAAgAAAAAAAMAAAACAAkAAAAAAAMAAAAEAAsAAAACAAMAAAADAAsAAAACAAMAAAAFAAsAAAACAAMAAAAGAAsAAAACAAMAAAAHAAsAAAACAAMAAAAIAAsAAAACAAMAAAAIAAwAAAACAAMAAAAHAAwAAAACAAMAAAAGAAwAAAACAAMAAAAFAAwAAAACAAMAAAAEAAwAAAACAAMAAAADAAwAAAACAAMAAAAJAAwAAAACAAMAAAAKAAwAAAACAAMAAAALAAwAAAACAAMAAAAMAAwAAAACAAMAAAANAAwAAAACAAMAAAANAA0AAAACAAMAAAAMAA0AAAACAAMAAAALAA4AAAACAAMAAAAKAA4AAAACAAMAAAAJAA4AAAACAAMAAAAIAA4AAAACAAMAAAAHAA4AAAACAAMAAAAGAA4AAAACAAMAAAAFAA4AAAACAAMAAAAEAA4AAAACAAMAAAADAA4AAAACAAMAAAACAA4AAAACAAMAAAADAA0AAAACAAMAAAAEAA0AAAACAAMAAAAFAA0AAAACAAMAAAAGAA0AAAACAAMAAAAHAA0AAAACAAMAAAAIAA0AAAACAAMAAAAJAA0AAAACAAMAAAAKAA0AAAACAAMAAAALAA0AAAACAAMAAAANAAsAAAACAAMAAAAMAAYAAAACAAMAAAALAAYAAAACAAMAAAAKAAYAAAACAAMAAAAJAAYAAAACAAMAAAALAAMAAAACAAMAAAALAAIAAAACAAMAAAAMAAIAAAACAAMAAAAKAAIAAAACAAMAAAAJAAIAAAACAAMAAAAGAAMAAAACAAMAAAAFAAMAAAACAAMAAAAEAAIAAAACAAMAAAAFAAIAAAACAAMAAAADAAIAAAACAAMAAAADAAMAAAACAAMAAAADAAQAAAACAAMAAAADAAUAAAACAAMAAAADAAYAAAACAAMAAAADAAcAAAACAAMAAAABAAcAAAACAAMAAAABAAYAAAACAAMAAAABAAUAAAACAAMAAAAAAAUAAAACAAMAAAAAAAQAAAACAAMAAAAAAAMAAAACAAMAAAAAAAYAAAACAAMAAAABAAQAAAACAAMAAAABAAMAAAACAAMAAAABAAIAAAACAAMAAAABAAEAAAACAAMAAAAAAAAAAAACAAMAAAABAAAAAAACAAMAAAACAAAAAAACAAMAAAADAAAAAAACAAMAAAAEAAAAAAACAAMAAAAFAAAAAAACAAMAAAAGAAAAAAACAAMAAAAHAAAAAAACAAMAAAAIAAAAAAACAAMAAAAJAAAAAAACAAMAAAAKAAAAAAACAAMAAAAJAAEAAAACAAMAAAAIAAEAAAACAAMAAAAHAAEAAAACAAMAAAAGAAEAAAACAAMAAAAFAAEAAAACAAMAAAAEAAEAAAACAAMAAAADAAEAAAACAAMAAAACAAEAAAACAAMAAAACAAIAAAACAAMAAAALAAAAAAACAAMAAAAMAAAAAAACAAMAAAAMAAEAAAACAAMAAAALAAEAAAACAAMAAAAKAAEAAAACAAMAAAANAAEAAAACAAMAAAANAAAAAAACAAMAAAAOAAEAAAACAAMAAAAOAAIAAAACAAMAAAAOAAMAAAACAAMAAAAOAAQAAAACAAMAAAAOAAUAAAACAAMAAAAOAAYAAAACAAMAAAAOAAcAAAACAAMAAAAOAAgAAAACAAMAAAAOAAkAAAACAAMAAAAOAAoAAAACAAMAAAAOAAsAAAACAAMAAAAOAAwAAAACAAMAAAAOAA0AAAACAAMAAAAOAA4AAAACAAMAAAANAA4AAAACAAMAAAAMAA4AAAACAAMAAAAAAA0AAAACAAMAAAAAAAwAAAACAAMAAAAAAAsAAAACAAMAAAAAAAoAAAACAAMAAAABAAwAAAACAAMAAAAAAA4AAAACAAMAAAABAAsAAAACAAMAAAABAAgAAAACAAMAAAAAAAcAAAACAAMAAAAAAAgAAAACAAMAAAAAAAkAAAACAAMAAAABAAoAAAACAAMAAAABAAkAAAACAAMAAAAAAAIAAAACAAMAAAAAAAEAAAACAAMAAAAOAAAAAAACAAMAAAA=")
|
||||
tile_set = ExtResource("1_0ej5m")
|
||||
script = ExtResource("2_8fanf")
|
||||
_solidLayer = NodePath("../Walls")
|
||||
|
||||
[node name="Walls" type="TileMapLayer" parent="."]
|
||||
tile_map_data = PackedByteArray("AAADAAYAAAABAAEAAAADAAcAAAABAAEAAAADAAUAAAABAAEAAAADAAQAAAABAAEAAAADAAMAAAABAAEAAAADAAIAAAABAAEAAAAGAAMAAAABAAEAAAAFAAMAAAABAAEAAAAFAAIAAAABAAEAAAAEAAIAAAABAAEAAAAKAAIAAAABAAEAAAAJAAIAAAABAAEAAAALAAIAAAABAAEAAAAMAAIAAAABAAEAAAALAAMAAAABAAEAAAAJAAYAAAABAAEAAAAKAAYAAAABAAEAAAALAAYAAAABAAEAAAAMAAYAAAABAAEAAAAPAAEAAAABAAEAAAAPAAIAAAABAAEAAAAPAAMAAAABAAEAAAAPAAQAAAABAAEAAAAPAAUAAAABAAEAAAAPAAYAAAABAAEAAAAPAAcAAAABAAEAAAAPAAgAAAABAAEAAAAPAAkAAAABAAEAAAAPAAoAAAABAAEAAAAPAAsAAAABAAEAAAAPAAwAAAABAAEAAAAPAA0AAAABAAEAAAAPAA4AAAABAAEAAAAPAA8AAAABAAEAAAAOAA8AAAABAAEAAAANAA8AAAABAAEAAAAMAA8AAAABAAEAAAALAA8AAAABAAEAAAAKAA8AAAABAAEAAAAJAA8AAAABAAEAAAAIAA8AAAABAAEAAAAHAA8AAAABAAEAAAAGAA8AAAABAAEAAAAFAA8AAAABAAEAAAAEAA8AAAABAAEAAAADAA8AAAABAAEAAAACAA8AAAABAAEAAAABAA8AAAABAAEAAAAAAA8AAAABAAEAAAD//w8AAAABAAEAAAD//w4AAAABAAEAAAD//w0AAAABAAEAAAD//wwAAAABAAEAAAD//wsAAAABAAEAAAD//woAAAABAAEAAAD//wkAAAABAAEAAAD//wgAAAABAAEAAAD//wcAAAABAAEAAAD//wYAAAABAAEAAAD//wUAAAABAAEAAAD+/wUAAAABAAEAAAD+/wQAAAABAAEAAAD+/wMAAAABAAEAAAD+/wIAAAABAAEAAAD//wIAAAABAAEAAAD//wEAAAABAAEAAAD+/wEAAAABAAEAAAD+/wAAAAABAAEAAAAFAP//AAABAAEAAAAGAP//AAABAAEAAAAHAP//AAABAAEAAAAIAP//AAABAAEAAAAJAP//AAABAAEAAAAKAP//AAABAAEAAAALAP//AAABAAEAAAAMAP//AAABAAEAAAANAP//AAABAAEAAAAOAP//AAABAAEAAAAOAAAAAAABAAEAAAAPAAAAAAABAAEAAAD9//7/AAABAAEAAAD+//3/AAABAAEAAAD///3/AAABAAEAAAD///z/AAABAAEAAAAAAPz/AAABAAEAAAABAPz/AAABAAEAAAACAPz/AAABAAEAAAADAPz/AAABAAEAAAAEAPz/AAABAAEAAAAFAPz/AAABAAEAAAAGAPz/AAABAAEAAAAGAP3/AAABAAEAAAAHAP3/AAABAAEAAAAIAP3/AAABAAEAAAAIAP7/AAABAAEAAAAJAP7/AAABAAEAAAD8////AAABAAEAAAD9////AAABAAEAAAD9/wAAAAABAAEAAAAGAAwAAAABAAEAAAAHAAwAAAABAAEAAAAIAAwAAAABAAEAAAAJAAoAAAAEAAUAAAAKAAoAAAAEAAUAAAALAAoAAAAEAAUAAAALAAsAAAAEAAUAAAAMAAsAAAAEAAUAAAAMAAwAAAAEAAUAAAAMAA0AAAAEAAUAAAADAAoAAAAEAAUAAAACAAoAAAAEAAUAAAABAAoAAAAEAAUAAAABAAkAAAAEAAUAAAAAAAkAAAAEAAUAAAAAAAgAAAAEAAUAAAAGAAkAAAAEAAUAAAAHAAkAAAAEAAUAAAAHAAoAAAAEAAUAAAAGAAoAAAAEAAUAAAAGAAUAAAAEAAUAAAAFAAUAAAAEAAUAAAABAP//AAAEAAUAAAACAP//AAAEAAUAAAA=")
|
||||
tile_set = ExtResource("1_0ej5m")
|
||||
|
||||
[node name="Enemy" type="CharacterBody2D" parent="."]
|
||||
position = Vector2(88, 129)
|
||||
collision_layer = 16
|
||||
script = ExtResource("2_ow6o3")
|
||||
_movementSpeed = 50.0
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="Enemy"]
|
||||
target_desired_distance = 64.0
|
||||
path_max_distance = 200.0
|
||||
path_postprocessing = 1
|
||||
debug_enabled = true
|
||||
debug_use_custom = true
|
||||
debug_path_custom_color = Color(1, 0.0235294, 0.0156863, 1)
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Enemy"]
|
||||
shape = SubResource("CircleShape2D_uexe4")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Enemy"]
|
||||
sprite_frames = SubResource("SpriteFrames_s36lq")
|
||||
frame = 2
|
||||
frame_progress = 0.620075
|
||||
|
||||
[connection signal="velocity_computed" from="Enemy/NavigationAgent2D" to="Enemy" method="_on_navigation_agent_2d_velocity_computed"]
|
||||
300
Scenes/test.tscn
300
Scenes/test.tscn
File diff suppressed because one or more lines are too long
87
Scripts/Actors/NavigationTestEnemy.cs
Normal file
87
Scripts/Actors/NavigationTestEnemy.cs
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class NavigationTestEnemy : CharacterBody2D
|
||||
{
|
||||
[Export]
|
||||
private float _movementSpeed = 300.0f;
|
||||
public const float JumpVelocity = -400.0f;
|
||||
|
||||
private NavigationAgent2D _navigationAgent;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_navigationAgent = GetNode<NavigationAgent2D>("NavigationAgent2D");
|
||||
}
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
var mousePosition = GetGlobalMousePosition();
|
||||
_navigationAgent.TargetPosition = mousePosition;
|
||||
|
||||
var currentAgentPosition = GlobalPosition;
|
||||
|
||||
var nexPathPosition = _navigationAgent.GetNextPathPosition();
|
||||
|
||||
var newVelocity = currentAgentPosition.DirectionTo(nexPathPosition) * (_movementSpeed);
|
||||
|
||||
// Navigation is over, can do other things
|
||||
if (_navigationAgent.IsNavigationFinished())
|
||||
{
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (_navigationAgent.AvoidanceEnabled)
|
||||
{
|
||||
_navigationAgent.SetVelocity(newVelocity);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
_on_navigation_agent_2d_velocity_computed(newVelocity);
|
||||
}
|
||||
|
||||
MoveAndSlide();
|
||||
}
|
||||
|
||||
public void _on_navigation_agent_2d_velocity_computed(Vector2 safeVelocity)
|
||||
{
|
||||
this.Velocity = safeVelocity;
|
||||
|
||||
}
|
||||
|
||||
// public override void _PhysicsProcess(double delta)
|
||||
// {
|
||||
// Vector2 velocity = Velocity;
|
||||
//
|
||||
// // Add the gravity.
|
||||
// if (!IsOnFloor())
|
||||
// {
|
||||
// velocity += GetGravity() * (float)delta;
|
||||
// }
|
||||
//
|
||||
// // Handle Jump.
|
||||
// if (Input.IsActionJustPressed("ui_accept") && IsOnFloor())
|
||||
// {
|
||||
// velocity.Y = JumpVelocity;
|
||||
// }
|
||||
//
|
||||
// // Get the input direction and handle the movement/deceleration.
|
||||
// // As good practice, you should replace UI actions with custom gameplay actions.
|
||||
// Vector2 direction = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down");
|
||||
// if (direction != Vector2.Zero)
|
||||
// {
|
||||
// velocity.X = direction.X * Speed;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// velocity.X = Mathf.MoveToward(Velocity.X, 0, Speed);
|
||||
// }
|
||||
//
|
||||
// Velocity = velocity;
|
||||
// MoveAndSlide();
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -9,6 +9,9 @@ public partial class Bullet : Area2D
|
|||
|
||||
[Export]
|
||||
public float Damage = 1f;
|
||||
|
||||
[Export]
|
||||
public BulletOwner Owner = BulletOwner.None;
|
||||
|
||||
private Vector2 _direction = Vector2.Right;
|
||||
|
||||
|
|
@ -87,3 +90,10 @@ public partial class Bullet : Area2D
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum BulletOwner
|
||||
{
|
||||
None,
|
||||
Player,
|
||||
Enemy
|
||||
}
|
||||
|
|
|
|||
140
Scripts/Enemy.cs
140
Scripts/Enemy.cs
|
|
@ -3,7 +3,7 @@ using Godot;
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
public partial class Enemy : Area2D, IDestructible
|
||||
public partial class Enemy : CharacterBody2D
|
||||
{
|
||||
private InteractionController _cachedPlayer;
|
||||
private EnemyState _currentState = EnemyState.Idle;
|
||||
|
|
@ -12,6 +12,8 @@ public partial class Enemy : Area2D, IDestructible
|
|||
|
||||
[Export] public float WalkSpeed = 2500f;
|
||||
|
||||
[Export] public float PlayerDisengageRange = 500f;
|
||||
|
||||
[Export] public Weapon EquippedWeapon;
|
||||
|
||||
private float _currentHealth = 0f;
|
||||
|
|
@ -20,6 +22,10 @@ public partial class Enemy : Area2D, IDestructible
|
|||
|
||||
private NavigationAgent2D _navigationAgent;
|
||||
|
||||
private bool _isPlayerInRange = false;
|
||||
|
||||
private Vector2? _lastPlayerPosition = null;
|
||||
|
||||
[Export] public bool NavigationEnabled { get; set; } = false;
|
||||
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
|
|
@ -29,13 +35,13 @@ public partial class Enemy : Area2D, IDestructible
|
|||
|
||||
_navigationAgent = GetNode<NavigationAgent2D>("NavigationAgent2D");
|
||||
|
||||
CallDeferred("Setup");
|
||||
//CallDeferred("Setup");
|
||||
}
|
||||
|
||||
private void Setup()
|
||||
{
|
||||
|
||||
}
|
||||
// private void Setup()
|
||||
// {
|
||||
//
|
||||
// }
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
|
|
@ -45,10 +51,7 @@ public partial class Enemy : Area2D, IDestructible
|
|||
case EnemyState.Idle:
|
||||
|
||||
break;
|
||||
|
||||
case EnemyState.Primed:
|
||||
// Have the raycast follow the player and shoot if visible
|
||||
//HandlePlayerDetection();
|
||||
case EnemyState.Alert:
|
||||
break;
|
||||
|
||||
//case EnemyState.Shooting:
|
||||
|
|
@ -61,24 +64,72 @@ public partial class Enemy : Area2D, IDestructible
|
|||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
HandlePlayerDetection();
|
||||
if (NavigationEnabled)
|
||||
switch (_currentState)
|
||||
{
|
||||
var moveLocation = _navigationAgent.GetNextPathPosition();
|
||||
case EnemyState.Idle:
|
||||
HandlePlayerDetection();
|
||||
|
||||
break;
|
||||
case EnemyState.Alert:
|
||||
|
||||
// Update last known player position if it's in range
|
||||
if (_isPlayerInRange)
|
||||
{
|
||||
_lastPlayerPosition = _cachedPlayer.GlobalPosition;
|
||||
}
|
||||
|
||||
if (_lastPlayerPosition.HasValue)
|
||||
{
|
||||
_navigationAgent.SetTargetPosition(_lastPlayerPosition.Value);
|
||||
}
|
||||
|
||||
var currentAgentPosition = GlobalPosition;
|
||||
|
||||
if (_currentState is EnemyState.Primed)
|
||||
{
|
||||
this.Position = moveLocation;
|
||||
}
|
||||
var nextPathPosition = _navigationAgent.GetNextPathPosition();
|
||||
|
||||
var newVelocity = currentAgentPosition.DirectionTo(nextPathPosition) * (float)(WalkSpeed * delta);
|
||||
|
||||
|
||||
// Navigation is over, can do other things like shooting
|
||||
if (_navigationAgent.IsNavigationFinished())
|
||||
{
|
||||
// Shoot player
|
||||
Shoot();
|
||||
|
||||
// TODO: If player totally left the max range it should stop shooting and go back to idle
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (_navigationAgent.AvoidanceEnabled)
|
||||
{
|
||||
_navigationAgent.SetVelocity(newVelocity);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
_on_navigation_agent_2d_velocity_computed(newVelocity);
|
||||
}
|
||||
|
||||
MoveAndSlide();
|
||||
|
||||
break;
|
||||
case EnemyState.Patrolling:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void _on_navigation_agent_2d_velocity_computed(Vector2 safeVelocity)
|
||||
{
|
||||
this.Velocity = safeVelocity;
|
||||
|
||||
}
|
||||
|
||||
private void HandlePlayerDetection()
|
||||
{
|
||||
if (_cachedPlayer == null || _currentState is not EnemyState.Primed)
|
||||
if (_cachedPlayer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -86,21 +137,22 @@ public partial class Enemy : Area2D, IDestructible
|
|||
if (IsPlayerInSight())
|
||||
{
|
||||
// Update player position only if player is in sight
|
||||
if (NavigationEnabled)
|
||||
{
|
||||
_navigationAgent.SetTargetPosition(_cachedPlayer.GlobalPosition);
|
||||
}
|
||||
Shoot();
|
||||
|
||||
// if (NavigationEnabled)
|
||||
// {
|
||||
// _navigationAgent.SetTargetPosition(_cachedPlayer.GlobalPosition);
|
||||
// }
|
||||
//Shoot();
|
||||
|
||||
_currentState = EnemyState.Alert;
|
||||
}
|
||||
}
|
||||
|
||||
private void Shoot()
|
||||
{
|
||||
if (EquippedWeapon == null) return;
|
||||
if (EquippedWeapon == null || !_lastPlayerPosition.HasValue) return;
|
||||
|
||||
EquippedWeapon.ShootDirection = (_cachedPlayer.GlobalPosition - this.GlobalPosition).Normalized();
|
||||
// Shoot at the player's last known position
|
||||
EquippedWeapon.ShootDirection = (_lastPlayerPosition.Value - this.GlobalPosition).Normalized();
|
||||
|
||||
EquippedWeapon.Shoot();
|
||||
|
||||
|
|
@ -147,19 +199,31 @@ public partial class Enemy : Area2D, IDestructible
|
|||
Debug.WriteLine("Enemy detection area Entered by interaction controller");
|
||||
|
||||
_cachedPlayer = player;
|
||||
if (_currentState is EnemyState.Idle)
|
||||
{
|
||||
_currentState = EnemyState.Primed;
|
||||
}
|
||||
|
||||
_isPlayerInRange = true;
|
||||
// if (_currentState is EnemyState.Idle)
|
||||
// {
|
||||
// _currentState = EnemyState.Primed;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
private void _on_player_detection_area_exited(Area2D area)
|
||||
{
|
||||
if (_currentState is EnemyState.Primed)
|
||||
{
|
||||
_currentState = EnemyState.Idle;
|
||||
}
|
||||
_isPlayerInRange = false;
|
||||
|
||||
// if (_currentState is EnemyState.Primed)
|
||||
// {
|
||||
// _currentState = EnemyState.Idle;
|
||||
// }
|
||||
}
|
||||
|
||||
private void _on_damage_hitbox_area_entered(Area2D area)
|
||||
{
|
||||
if (area is not Bullet bullet) return;
|
||||
GD.Print("Enemy Received damage");
|
||||
this.Hit(bullet.Damage);
|
||||
bullet.QueueFree();
|
||||
}
|
||||
|
||||
// Bullets collision
|
||||
|
|
@ -167,7 +231,7 @@ public partial class Enemy : Area2D, IDestructible
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void Explode()
|
||||
{
|
||||
Debug.WriteLine("Ded");
|
||||
|
|
@ -194,7 +258,7 @@ public partial class Enemy : Area2D, IDestructible
|
|||
private enum EnemyState
|
||||
{
|
||||
Idle,
|
||||
Primed,
|
||||
Alert,
|
||||
Patrolling
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,10 @@ public partial class GameManager : Node2D
|
|||
_player.HealthChanged += (newHealth, maxHealth) => _hud.UpdateHealth(newHealth, maxHealth);
|
||||
|
||||
_player.InteractableAreaEntered += (interactable) => _hud.UpdateInteractable(interactable);
|
||||
|
||||
|
||||
Inventory.ItemAdded += (item) => _hud.AddInventoryItem(item);
|
||||
Inventory.ItemRemoved += (item) => _hud.RemoveInventoryItem(item);
|
||||
|
||||
//_player.Connect(nameof(_player.HealthChanged), _hud, nameof(_hud.UpdateHealth));
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
using Godot;
|
||||
using System;
|
||||
using Cirno.Scripts.Resources;
|
||||
|
||||
public partial class Hud : CanvasLayer
|
||||
{
|
||||
[Signal]
|
||||
public delegate void StartGameEventHandler();
|
||||
|
||||
private Label _healthLabel;
|
||||
//private Label _healthLabel;
|
||||
|
||||
[Export]
|
||||
public PackedScene SelectorScene { get; set; }
|
||||
|
|
@ -14,10 +15,13 @@ public partial class Hud : CanvasLayer
|
|||
[Export]
|
||||
private Node2D _selector;
|
||||
|
||||
[Export] private Label _healthLabel;
|
||||
[Export] private Container _itemsContainer;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
// Assuming the HUD has a Label node named "HealthLabel"
|
||||
_healthLabel = GetNode<Label>("HealthLabel");
|
||||
//_healthLabel = GetNode<Label>("HealthLabel");
|
||||
}
|
||||
|
||||
public void ShowMessage(string text)
|
||||
|
|
@ -56,4 +60,17 @@ public partial class Hud : CanvasLayer
|
|||
|
||||
//_selector.Position = _selector.tolo
|
||||
}
|
||||
|
||||
public void AddInventoryItem(LootItem item)
|
||||
{
|
||||
TextureRect texture = new TextureRect();
|
||||
texture.Texture = item.InventorySprite;
|
||||
|
||||
_itemsContainer.AddChild(texture);
|
||||
}
|
||||
|
||||
public void RemoveInventoryItem(LootItem item)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
26
Scripts/Interactables/ItemPickup.cs
Normal file
26
Scripts/Interactables/ItemPickup.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
using Cirno.Scripts.Resources;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace Cirno.Scripts.Interactables;
|
||||
|
||||
public partial class ItemPickup : Interactable
|
||||
{
|
||||
[Export] public Array<LootItem> LootTable = new Array<LootItem>();
|
||||
|
||||
public override bool Activate()
|
||||
{
|
||||
GD.Print("Attempting to Pickup Item");
|
||||
|
||||
if (!MeetsRequirements()) return false;
|
||||
foreach (var item in LootTable)
|
||||
{
|
||||
_inventoryManager.AddItem(item.Item, item.Amount);
|
||||
}
|
||||
|
||||
// Delet This
|
||||
QueueFree();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,12 @@ public partial class InventoryManager : Node2D
|
|||
public bool RedKeycard { get; set; }
|
||||
|
||||
private List<LootItem> _items = new List<LootItem>();
|
||||
|
||||
[Signal]
|
||||
public delegate void ItemAddedEventHandler(LootItem item);
|
||||
|
||||
[Signal]
|
||||
public delegate void ItemRemovedEventHandler(LootItem item);
|
||||
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
|
|
@ -33,8 +39,10 @@ public partial class InventoryManager : Node2D
|
|||
|
||||
public bool AddItem(ItemTypes type, int amount = 1)
|
||||
{
|
||||
_items.Add(new LootItem() { Item = type, Amount = amount });
|
||||
var item = new LootItem() { Item = type, Amount = amount };
|
||||
_items.Add(item);
|
||||
GD.Print($"Added {type} x{amount}");
|
||||
EmitSignal(nameof(ItemAdded), item);
|
||||
// switch (type)
|
||||
// {
|
||||
// // case ItemTypes.KeycardRed:
|
||||
|
|
|
|||
|
|
@ -8,4 +8,9 @@ public partial class LootItem : Resource
|
|||
[Export] public ItemTypes Item;
|
||||
[Export] public int Amount;
|
||||
[Export] public int Max;
|
||||
[Export] public bool PickupIfMaxed;
|
||||
[Export] public bool ConsumeOnUse;
|
||||
|
||||
[Export] public AtlasTexture InventorySprite;
|
||||
[Export] public SpriteFrames WorldSprite;
|
||||
}
|
||||
23
Scripts/TilemapAvoidance.cs
Normal file
23
Scripts/TilemapAvoidance.cs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class TilemapAvoidance : TileMapLayer
|
||||
{
|
||||
|
||||
[Export] private TileMapLayer _solidLayer;
|
||||
|
||||
public override bool _UseTileDataRuntimeUpdate(Vector2I coords)
|
||||
{
|
||||
if (_solidLayer.GetUsedCellsById(0).Contains(coords))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void _TileDataRuntimeUpdate(Vector2I coords, TileData tileData)
|
||||
{
|
||||
tileData.SetNavigationPolygon(0, null);
|
||||
}
|
||||
}
|
||||
BIN
Sprites/Items/Ammo1.aseprite
(Stored with Git LFS)
Normal file
BIN
Sprites/Items/Ammo1.aseprite
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Sprites/Items/Ammo1.png
(Stored with Git LFS)
Normal file
BIN
Sprites/Items/Ammo1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
Sprites/Items/Ammo1.png.import
Normal file
34
Sprites/Items/Ammo1.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c5g0qg6u2gm6f"
|
||||
path="res://.godot/imported/Ammo1.png-05d86b462dc0f5b4fb8cd16192981dcd.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Sprites/Items/Ammo1.png"
|
||||
dest_files=["res://.godot/imported/Ammo1.png-05d86b462dc0f5b4fb8cd16192981dcd.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
Sprites/Items/BlueKeycard_Small.aseprite
(Stored with Git LFS)
Normal file
BIN
Sprites/Items/BlueKeycard_Small.aseprite
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Sprites/Items/BlueKeycard_Small.png
(Stored with Git LFS)
Normal file
BIN
Sprites/Items/BlueKeycard_Small.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
Sprites/Items/BlueKeycard_Small.png.import
Normal file
34
Sprites/Items/BlueKeycard_Small.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bvybqletsvqgk"
|
||||
path="res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Sprites/Items/BlueKeycard_Small.png"
|
||||
dest_files=["res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
Sprites/Items/GreenKeycard_Small.aseprite
(Stored with Git LFS)
Normal file
BIN
Sprites/Items/GreenKeycard_Small.aseprite
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Sprites/Items/GreenKeycard_Small.png
(Stored with Git LFS)
Normal file
BIN
Sprites/Items/GreenKeycard_Small.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
Sprites/Items/GreenKeycard_Small.png.import
Normal file
34
Sprites/Items/GreenKeycard_Small.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bvkjnc3ggp7ba"
|
||||
path="res://.godot/imported/GreenKeycard_Small.png-a8d591427ed9e736d5a900d3111dd142.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Sprites/Items/GreenKeycard_Small.png"
|
||||
dest_files=["res://.godot/imported/GreenKeycard_Small.png-a8d591427ed9e736d5a900d3111dd142.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
Sprites/Items/RedKeycard_Small.aseprite
(Stored with Git LFS)
Normal file
BIN
Sprites/Items/RedKeycard_Small.aseprite
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Sprites/Items/RedKeycard_Small.png
(Stored with Git LFS)
Normal file
BIN
Sprites/Items/RedKeycard_Small.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
Sprites/Items/RedKeycard_Small.png.import
Normal file
34
Sprites/Items/RedKeycard_Small.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bad6gbl2gity3"
|
||||
path="res://.godot/imported/RedKeycard_Small.png-11803ebfee263388f1f5d2bd1a970e0e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Sprites/Items/RedKeycard_Small.png"
|
||||
dest_files=["res://.godot/imported/RedKeycard_Small.png-11803ebfee263388f1f5d2bd1a970e0e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
293
Tilesets/factory_tileset.tres
Normal file
293
Tilesets/factory_tileset.tres
Normal file
|
|
@ -0,0 +1,293 @@
|
|||
[gd_resource type="TileSet" load_steps=24 format=3 uid="uid://6k28roiljylj"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://tphqodqyere1" path="res://Tilesets/factory.png" id="1_70kxh"]
|
||||
[ext_resource type="PackedScene" uid="uid://bj28qiai2x2ar" path="res://Scenes/Props/Barrel.tscn" id="2_cxg4b"]
|
||||
[ext_resource type="PackedScene" uid="uid://bgk7fgwiis425" path="res://Scenes/Props/Box_Red.tscn" id="3_hrh63"]
|
||||
[ext_resource type="PackedScene" uid="uid://crph24e6e0v0q" path="res://Scenes/Interactable/Control_Pad.tscn" id="4_brv02"]
|
||||
[ext_resource type="PackedScene" uid="uid://bqq3q37hugdlj" path="res://Scenes/Door.tscn" id="5_1xipm"]
|
||||
[ext_resource type="PackedScene" uid="uid://uaf5r6cd71hu" path="res://Scenes/Props/LargeTank.tscn" id="6_p8eu6"]
|
||||
[ext_resource type="PackedScene" uid="uid://7cpk3c3d8cl7" path="res://Scenes/Props/MediumLiquidTank.tscn" id="7_k6a3n"]
|
||||
[ext_resource type="PackedScene" uid="uid://crmwuwhltmdq7" path="res://Scenes/Props/MediumTank.tscn" id="8_vuaww"]
|
||||
[ext_resource type="PackedScene" uid="uid://bnhck5eh0tqxf" path="res://Scenes/Props/MediumTerminal.tscn" id="9_wc4jy"]
|
||||
[ext_resource type="PackedScene" uid="uid://e80xujqyjoh" path="res://Scenes/Props/Box_Vertical.tscn" id="10_hg2bp"]
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_l8pdw"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_lnwgu"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ml1qs"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_h4p0b"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_t0ujl"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_uanwu"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_6t4b1"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ajuv4"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_3ass8"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_2t186"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_63d1d"]
|
||||
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
agent_radius = 0.0
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_jwf4b"]
|
||||
resource_name = "Factory"
|
||||
texture = ExtResource("1_70kxh")
|
||||
0:0/0 = 0
|
||||
1:0/0 = 0
|
||||
2:0/0 = 0
|
||||
3:0/0 = 0
|
||||
3:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:0/0 = 0
|
||||
5:0/0 = 0
|
||||
6:0/0 = 0
|
||||
7:0/0 = 0
|
||||
8:0/0 = 0
|
||||
9:0/0 = 0
|
||||
0:1/0 = 0
|
||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_l8pdw")
|
||||
1:1/0 = 0
|
||||
1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:1/0 = 0
|
||||
3:1/0 = 0
|
||||
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
|
||||
4:1/0 = 0
|
||||
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:1/0 = 0
|
||||
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:1/0 = 0
|
||||
6:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_uanwu")
|
||||
7:1/0 = 0
|
||||
8:1/0 = 0
|
||||
9:1/0 = 0
|
||||
0:2/0 = 0
|
||||
1:2/0 = 0
|
||||
2:2/0 = 0
|
||||
3:2/0 = 0
|
||||
4:2/0 = 0
|
||||
5:2/0 = 0
|
||||
6:2/0 = 0
|
||||
6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_6t4b1")
|
||||
7:2/0 = 0
|
||||
8:2/0 = 0
|
||||
9:2/0 = 0
|
||||
0:3/0 = 0
|
||||
0:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_lnwgu")
|
||||
1:3/0 = 0
|
||||
1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ml1qs")
|
||||
2:3/0 = 0
|
||||
2:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_h4p0b")
|
||||
3:3/0 = 0
|
||||
3:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_t0ujl")
|
||||
4:3/animation_columns = 2
|
||||
4:3/0 = 0
|
||||
5:3/0 = 0
|
||||
7:3/0 = 0
|
||||
8:3/0 = 0
|
||||
9:3/0 = 0
|
||||
0:4/0 = 0
|
||||
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:4/0 = 0
|
||||
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:4/0 = 0
|
||||
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:4/0 = 0
|
||||
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:4/0 = 0
|
||||
5:4/0 = 0
|
||||
6:4/0 = 0
|
||||
7:4/0 = 0
|
||||
8:4/0 = 0
|
||||
9:4/0 = 0
|
||||
0:5/0 = 0
|
||||
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:5/0 = 0
|
||||
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:5/0 = 0
|
||||
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:5/0 = 0
|
||||
3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:5/0 = 0
|
||||
4:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:5/0 = 0
|
||||
5:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:5/0 = 0
|
||||
6:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ajuv4")
|
||||
7:5/0 = 0
|
||||
7:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ajuv4")
|
||||
8:5/0 = 0
|
||||
8:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ajuv4")
|
||||
9:5/0 = 0
|
||||
0:6/0 = 0
|
||||
0:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:6/0 = 0
|
||||
1:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:6/0 = 0
|
||||
2:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:6/0 = 0
|
||||
3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:6/0 = 0
|
||||
5:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:6/0 = 0
|
||||
6:6/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_3ass8")
|
||||
7:6/0 = 0
|
||||
8:6/0 = 0
|
||||
8:6/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_63d1d")
|
||||
9:6/0 = 0
|
||||
0:7/0 = 0
|
||||
0:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:7/0 = 0
|
||||
1:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:7/0 = 0
|
||||
2:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:7/0 = 0
|
||||
3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:7/0 = 0
|
||||
5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:7/0 = 0
|
||||
6:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_2t186")
|
||||
7:7/0 = 0
|
||||
7:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_2t186")
|
||||
8:7/0 = 0
|
||||
8:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_63d1d")
|
||||
9:7/0 = 0
|
||||
0:8/0 = 0
|
||||
1:8/0 = 0
|
||||
2:8/0 = 0
|
||||
3:8/0 = 0
|
||||
4:8/0 = 0
|
||||
5:8/0 = 0
|
||||
6:8/0 = 0
|
||||
7:8/0 = 0
|
||||
8:8/0 = 0
|
||||
9:8/0 = 0
|
||||
0:9/0 = 0
|
||||
1:9/0 = 0
|
||||
2:9/0 = 0
|
||||
3:9/0 = 0
|
||||
4:9/0 = 0
|
||||
5:9/0 = 0
|
||||
6:9/0 = 0
|
||||
7:9/0 = 0
|
||||
8:9/0 = 0
|
||||
9:9/0 = 0
|
||||
0:10/0 = 0
|
||||
1:10/0 = 0
|
||||
2:10/0 = 0
|
||||
3:10/0 = 0
|
||||
4:10/0 = 0
|
||||
5:10/0 = 0
|
||||
6:10/0 = 0
|
||||
7:10/0 = 0
|
||||
8:10/0 = 0
|
||||
9:10/0 = 0
|
||||
0:11/0 = 0
|
||||
1:11/0 = 0
|
||||
2:11/0 = 0
|
||||
3:11/0 = 0
|
||||
4:11/0 = 0
|
||||
5:11/0 = 0
|
||||
6:11/0 = 0
|
||||
7:11/0 = 0
|
||||
8:11/0 = 0
|
||||
9:11/0 = 0
|
||||
0:12/0 = 0
|
||||
1:12/0 = 0
|
||||
2:12/0 = 0
|
||||
3:12/0 = 0
|
||||
4:12/0 = 0
|
||||
5:12/0 = 0
|
||||
6:12/0 = 0
|
||||
7:12/0 = 0
|
||||
8:12/0 = 0
|
||||
9:12/0 = 0
|
||||
0:13/0 = 0
|
||||
1:13/0 = 0
|
||||
2:13/0 = 0
|
||||
3:13/0 = 0
|
||||
4:13/0 = 0
|
||||
5:13/0 = 0
|
||||
6:13/0 = 0
|
||||
7:13/0 = 0
|
||||
8:13/0 = 0
|
||||
9:13/0 = 0
|
||||
0:14/0 = 0
|
||||
1:14/0 = 0
|
||||
2:14/0 = 0
|
||||
3:14/0 = 0
|
||||
4:14/0 = 0
|
||||
5:14/0 = 0
|
||||
6:14/0 = 0
|
||||
7:14/0 = 0
|
||||
8:14/0 = 0
|
||||
9:14/0 = 0
|
||||
6:3/0 = 0
|
||||
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-4, -6, -4, 0, 4, 0, 4, -6)
|
||||
|
||||
[sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_qg3vu"]
|
||||
resource_name = "Props"
|
||||
scenes/1/scene = ExtResource("2_cxg4b")
|
||||
scenes/2/scene = ExtResource("3_hrh63")
|
||||
scenes/3/scene = ExtResource("4_brv02")
|
||||
scenes/4/scene = ExtResource("5_1xipm")
|
||||
scenes/5/scene = ExtResource("6_p8eu6")
|
||||
scenes/6/scene = ExtResource("7_k6a3n")
|
||||
scenes/7/scene = ExtResource("8_vuaww")
|
||||
scenes/8/scene = ExtResource("9_wc4jy")
|
||||
scenes/9/scene = ExtResource("10_hg2bp")
|
||||
|
||||
[resource]
|
||||
physics_layer_0/collision_layer = 1
|
||||
physics_layer_0/collision_mask = 30
|
||||
physics_layer_1/collision_layer = 32
|
||||
physics_layer_1/collision_mask = 18
|
||||
navigation_layer_0/layers = 1
|
||||
sources/0 = SubResource("TileSetAtlasSource_jwf4b")
|
||||
sources/1 = SubResource("TileSetScenesCollectionSource_qg3vu")
|
||||
Loading…
Add table
Add a link
Reference in a new issue