using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyFollow : MonoBehaviour
{
private void OnTriggerStay2D(Collider2D collision)
{
if ("Player" == collision.tag)
Player = collision.GetComponent();
else
Player = null;
}
private void OnTriggerExit2D(Collider2D collision)
{
if ("Player" == collision.tag)
Player = null;
}
public void Aggro()
{
if (PlayerInSight())
{
if (XDistance(_aggro.Player) > 1f) //TBD value
{
isAggro = true;
_enemy.Patrol.isPatrolling = false;
MoveToPlayer();
_enemy.ToggleIdle(false);
}
else
{
isAggro = false;
_enemy.Patrol.isPatrolling = false;
_enemy.ToggleIdle(true);
}
}
else
{
isAggro = false;
_enemy.Patrol.isPatrolling = true;
}
}
private bool PlayerInSight()
{
return _aggro.Player != null;
}
private float XDistance(Transform target)
{
return Mathf.Abs(transform.position.x - target.position.x);
}
private void MoveToPlayer()
{
if (_enemy.Speed > 0)
{
_enemy.Model.flipX = LeftToRight();
FlipRange(LeftToRight());
}
Vector3 target = _aggro.Player.position;
target.y = transform.position.y;
transform.position = Vector3.MoveTowards(transform.position, target, Time.deltaTime * _enemy.Speed);
}
public void FlipRange(bool leftToRight)
{
_aggro.transform.localScale = leftToRight ? _reverse : Vector3.one;
}
private bool LeftToRight()
{
return transform.position.x > _aggro.Player.position.x;
}
}
↧