From e5f415f9d47472d1a1a3f458e6527daaaafe8d2a Mon Sep 17 00:00:00 2001 From: Valdimir Date: Thu, 3 Aug 2023 12:09:24 +0300 Subject: [PATCH] FIx enemy AI --- Assets/Scenes/SampleScene.unity | 2 +- Assets/Scenes/Test.unity | 4 ++-- Assets/Scripts/Character.cs | 15 ++++++++++++--- Assets/Scripts/EnemyAI.cs | 4 ++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index fed31b3..fdf2531 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -6496,7 +6496,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _prefab: {fileID: 3591543287615843076, guid: 9343f4905e9dde64aa00eaf4ff433352, type: 3} - _maxCharacters: 2 + _maxCharacters: 1 _spawnPoint: {fileID: 0} --- !u!4 &1638752929 Transform: diff --git a/Assets/Scenes/Test.unity b/Assets/Scenes/Test.unity index 099a2bb..a7f22e3 100644 --- a/Assets/Scenes/Test.unity +++ b/Assets/Scenes/Test.unity @@ -2998,11 +2998,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7345322822309755345, guid: 3d1aa56cd139405448c73b1385177b04, type: 3} propertyPath: m_LocalPosition.x - value: 4.5 + value: 3.5 objectReference: {fileID: 0} - target: {fileID: 7345322822309755345, guid: 3d1aa56cd139405448c73b1385177b04, type: 3} propertyPath: m_LocalPosition.y - value: -0.5 + value: -1.5 objectReference: {fileID: 0} - target: {fileID: 7345322822309755345, guid: 3d1aa56cd139405448c73b1385177b04, type: 3} propertyPath: m_LocalPosition.z diff --git a/Assets/Scripts/Character.cs b/Assets/Scripts/Character.cs index 95b8256..3e1ddff 100644 --- a/Assets/Scripts/Character.cs +++ b/Assets/Scripts/Character.cs @@ -145,9 +145,18 @@ public abstract class Character : MonoBehaviour private bool CanGoDown() { - var rayCastHit = Physics2D.RaycastAll(_capsuleCollider.bounds.center, Vector2.down, _capsuleCollider.size.y+0.5f, _mapLayer); - if (rayCastHit.Any(x=>x.collider.transform.GetComponent().ElementSO.ElementType != MapElementType.Ladder)) - return false; + var rayCastHit = Physics2D.RaycastAll(_capsuleCollider.bounds.center, Vector2.down, 0.5f, _mapLayer); + var isNoladder = rayCastHit.Any(x => x.collider.transform.GetComponent().ElementSO.ElementType != MapElementType.Ladder); + foreach (var hit in rayCastHit) + { + Debug.DrawLine(hit.point, hit.point + hit.normal.normalized * 0.2f, isNoladder? Color.blue: Color.red); + } + + if (isNoladder) + { + return false; + } + return true; } diff --git a/Assets/Scripts/EnemyAI.cs b/Assets/Scripts/EnemyAI.cs index 2a116c6..9de8466 100644 --- a/Assets/Scripts/EnemyAI.cs +++ b/Assets/Scripts/EnemyAI.cs @@ -22,11 +22,11 @@ public class EnemyAI : Character float verticalDistance = Player.Instance.transform.position.y - transform.position.y; - if (verticalDistance > 0 && isCanClimbUp && isAllowVertical) + if (verticalDistance > 0.1f && isCanClimbUp && isAllowVertical) { vertical = VerticalMove(verticalDistance); } - else if (verticalDistance < 0 && isAllowVertical && isCanGoDown) + else if (verticalDistance < 0.1f && isAllowVertical && isCanGoDown) { vertical = VerticalMove(verticalDistance); }