77 lines
2.5 KiB
C#
77 lines
2.5 KiB
C#
using UnityEngine;
|
|
|
|
public class EnemyAI : Character
|
|
{
|
|
protected override void OnDeath()
|
|
{
|
|
}
|
|
|
|
protected override void SetClimbingAnimation(bool isClimbing)
|
|
{
|
|
}
|
|
|
|
protected override void SetWalkingAnimation(bool isWalking)
|
|
{
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
float horizontal = 0;
|
|
float vertical = 0;
|
|
|
|
Vector2 directionToPlayer = Player.Instance.transform.position - transform.position;
|
|
directionToPlayer.Normalize(); // Нормализуем вектор, чтобы скорость была постоянной
|
|
|
|
// Преследуем игрока только по горизонтали, если враг не на лестнице
|
|
if (!_isOnLadder)
|
|
{
|
|
horizontal = directionToPlayer.x;
|
|
}
|
|
else
|
|
{
|
|
// Вычисляем направление движения к игроку по вертикали, если враг на лестнице
|
|
float verticalDistance = Player.Instance.transform.position.y - transform.position.y;
|
|
float verticalDirection = Mathf.Sign(verticalDistance);
|
|
vertical = verticalDirection;
|
|
}
|
|
|
|
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))
|
|
{ horizontal = 1; }
|
|
if (Input.GetKey(KeyCode.T))
|
|
{ vertical = 1; }
|
|
if (Input.GetKey(KeyCode.G))
|
|
{ vertical = -1; }
|
|
base.MoveTo(horizontal, vertical);
|
|
}
|
|
}
|