mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 08:55:35 +00:00
Navigation for enemies
This commit is contained in:
parent
13c4489017
commit
076cff208d
7 changed files with 547 additions and 297 deletions
|
|
@ -18,11 +18,12 @@ radius = 4.0
|
|||
[sub_resource type="CircleShape2D" id="CircleShape2D_v711r"]
|
||||
radius = 85.0529
|
||||
|
||||
[node name="Enemy" type="Area2D" node_paths=PackedStringArray("EquippedWeapon") groups=["Destroyable"]]
|
||||
[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="."]
|
||||
|
|
@ -57,7 +58,12 @@ BulletCapacity = 4
|
|||
BulletSpeed = 50.0
|
||||
|
||||
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="."]
|
||||
target_desired_distance = 64.0
|
||||
path_max_distance = 800.0
|
||||
path_postprocessing = 1
|
||||
debug_enabled = true
|
||||
debug_path_custom_color = Color(1, 0, 0, 1)
|
||||
|
||||
[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"]
|
||||
|
|
|
|||
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"]
|
||||
292
Scenes/test.tscn
292
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();
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@ using Godot;
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
public partial class Enemy : Area2D, IDestructible
|
||||
public partial class Enemy : CharacterBody2D, IDestructible
|
||||
{
|
||||
private InteractionController _cachedPlayer;
|
||||
private EnemyState _currentState = EnemyState.Idle;
|
||||
|
|
@ -61,18 +61,47 @@ public partial class Enemy : Area2D, IDestructible
|
|||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
HandlePlayerDetection();
|
||||
if (NavigationEnabled)
|
||||
{
|
||||
var moveLocation = _navigationAgent.GetNextPathPosition();
|
||||
|
||||
// Only do these actions if the enemy has been alerted
|
||||
if (_currentState is EnemyState.Primed)
|
||||
{
|
||||
this.Position = moveLocation;
|
||||
_navigationAgent.SetTargetPosition(_cachedPlayer.GlobalPosition);
|
||||
|
||||
var currentAgentPosition = GlobalPosition;
|
||||
|
||||
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
|
||||
HandlePlayerDetection();
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -86,10 +115,10 @@ public partial class Enemy : Area2D, IDestructible
|
|||
if (IsPlayerInSight())
|
||||
{
|
||||
// Update player position only if player is in sight
|
||||
if (NavigationEnabled)
|
||||
{
|
||||
_navigationAgent.SetTargetPosition(_cachedPlayer.GlobalPosition);
|
||||
}
|
||||
// if (NavigationEnabled)
|
||||
// {
|
||||
// _navigationAgent.SetTargetPosition(_cachedPlayer.GlobalPosition);
|
||||
// }
|
||||
Shoot();
|
||||
|
||||
|
||||
|
|
@ -167,7 +196,7 @@ public partial class Enemy : Area2D, IDestructible
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void Explode()
|
||||
{
|
||||
Debug.WriteLine("Ded");
|
||||
|
|
|
|||
34
Scripts/TilemapAvoidance.cs
Normal file
34
Scripts/TilemapAvoidance.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class TilemapAvoidance : TileMapLayer
|
||||
{
|
||||
|
||||
[Export] private TileMapLayer _solidLayer;
|
||||
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
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