diff --git a/Assets/Scripts/Character.cs b/Assets/Scripts/Character.cs index bc12c70..9ad7b76 100644 --- a/Assets/Scripts/Character.cs +++ b/Assets/Scripts/Character.cs @@ -22,7 +22,7 @@ public abstract class Character : MonoBehaviour private Rigidbody2D _body; private CapsuleCollider2D _capsuleCollider; protected bool _isOnBridge; - protected bool _isOnLadder = false; + private bool _isOnLadder = false; protected bool _isFalling; protected bool _facingRight = true; diff --git a/Assets/Scripts/EnemyAI.cs b/Assets/Scripts/EnemyAI.cs index 73ab682..6f7e135 100644 --- a/Assets/Scripts/EnemyAI.cs +++ b/Assets/Scripts/EnemyAI.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using UnityEditor.Experimental.GraphView; +using UnityEngine; public class EnemyAI : Character { @@ -20,49 +21,23 @@ public class EnemyAI : Character float vertical = 0; Vector2 directionToPlayer = Player.Instance.transform.position - transform.position; - directionToPlayer.Normalize(); // Нормализуем вектор, чтобы скорость была постоянной + directionToPlayer.Normalize(); - // Преследуем игрока только по горизонтали, если враг не на лестнице - if (!_isOnLadder) + if (Mathf.Abs(Player.Instance.transform.position.y - transform.position.y) < 0.1f) { horizontal = directionToPlayer.x; } + else if (isAllowVertical) + { + float verticalDistance = Player.Instance.transform.position.y - transform.position.y; + float verticalDirection = Mathf.Sign(verticalDistance); + vertical = verticalDirection; + } else { - // Вычисляем направление движения к игроку по вертикали, если враг на лестнице - float verticalDistance = Player.Instance.transform.position.y - transform.position.y; - float verticalDirection = Mathf.Sign(verticalDistance); - vertical = verticalDirection; + horizontal = directionToPlayer.x; } - if (!isAllowVertical) - { - float verticalDistance = Player.Instance.transform.position.y - transform.position.y; - float verticalDirection = Mathf.Sign(verticalDistance); - vertical = verticalDirection; - } - - - float horizontalDistance = Player.Instance.transform.position.x - transform.position.x; - float horizontalDirection = Mathf.Sign(horizontalDistance); - horizontal = horizontalDirection; - - - - //if (Player.Instance.transform.position.x - transform.position.x < -0.05f && isAllowLeft &&!_isOnLadder) - //{ - // horizontal = -1; - //} - //else if (Player.Instance.transform.position.x - transform.position.x > 0.05f && isAllowRight && !_isOnLadder) - //{ - // horizontal = 1; - //} - - //else if (Mathf.Abs(Player.Instance.transform.position.y - transform.position.y) > 0.05f && isAllowVertical) - //{ - // var deltaY = Player.Instance.transform.position.y - transform.position.y; - // vertical = deltaY > 0 ? 1 : -1; - //} if (Input.GetKey(KeyCode.F)) { horizontal = -1; } if (Input.GetKey(KeyCode.H))