如何在横版游戏中实现敌人漫游算法

这是我根据书上写的俯视视角的游戏敌人,可我试了半天怎么也把他改不成横版游戏的算法;他总是会在Y轴上跟随玩家移动,并且基本不会转向,还有个问题是我希望在他转向时Y轴欧拉角变为180(就是精灵转向),我怎么也试不出来 ,能帮忙看看嘛,非常感谢。
public class Wander : MonoBehaviour
{
public float pursuitSpeed; //追击速度
public float wanderSpeed; //漫游速度
float currentSpeed; //当前速度

public float directionChangeInterval;                //改变漫游方向的频率
                                                
public bool followPlayer ;                            //是否追逐玩家

Coroutine moveCoroutine;                             

Rigidbody2D rb2d;
Animator animator;
Transform targetTransform = null;

Vector3 endPosition;                                 //漫游目的

float currentAngle = 0;                              
private void Start()
{
    animator = GetComponent<Animator>();
    currentSpeed = wanderSpeed;                        //当前速度设置为漫游速度
    rb2d = GetComponent<Rigidbody2D>();
    //漫游入口
    StartCoroutine(WanderRoutine());
}
    public IEnumerator WanderRoutine()
    {
        while (true)
        {
            ChooseNewEndPoint();                      //选择一个新终点
            if(moveCoroutine != null)                 //检查是否有敌人在移动
            {
                StopCoroutine(moveCoroutine);
            }
            moveCoroutine = StartCoroutine(Move(rb2d, currentSpeed));
            yield return new WaitForSeconds(directionChangeInterval);
        }
    }


    void ChooseNewEndPoint()
    {
    currentAngle = Random.Range(0, 180);

    currentAngle += Mathf.Repeat(currentAngle, 180);//对currentAngle的值进行循环,永远也不会小于0或者大于360      
    endPosition += Vector3FromAngle(currentAngle);
                                                        //将角度转换为向量
}


Vector3 Vector3FromAngle(float inputAngleDegress)
{
    float inputAngleRadians = inputAngleDegress * Mathf.Deg2Rad;  //角度转换成弧度

    return new Vector3(Mathf.Cos(inputAngleRadians), 0,0);  //弧度变成向量
}
public IEnumerator Move(Rigidbody2D rigidBodyToMove,float speed)
{
    float remainingDistance = (transform.position - endPosition).sqrMagnitude; //当前位置到目的位置的距离
    
    while (remainingDistance > float.Epsilon)
    {
        if(targetTransform != null)
        {
            endPosition = targetTransform.position;
        }
        if(rigidBodyToMove != null)
        {
            animator.SetBool("isWalking", true);
            Vector3 newPostion = Vector3.MoveTowards(rigidBodyToMove.position, endPosition, speed * Time.deltaTime);
            rb2d.MovePosition(newPostion);
            remainingDistance = (transform.position - endPosition).sqrMagnitude;
        }
        yield return new WaitForFixedUpdate();
    }
    animator.SetBool("isWalking", false);
}

//碰转检测 遇到玩家追击
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.CompareTag("Player") && followPlayer)
{
currentSpeed = pursuitSpeed;

        targetTransform = collision.gameObject.transform;
    }
    if(moveCoroutine != null)
    {
        StopCoroutine(moveCoroutine);
    }
    moveCoroutine = StartCoroutine(Move(rb2d, currentSpeed));
}

//不再追击
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
animator.SetBool("isWalking", false);

        currentSpeed = wanderSpeed;

        if(moveCoroutine != null)
        {
            StopCoroutine(moveCoroutine);
        }
        targetTransform = null;
    }
}