敌人机器人远离玩家 Unity3D

Enemy bot moves away from the player Unity3D

我正在制作自上而下的射击游戏。我写了代码,让敌人在地图上随机生成,他们正试图抓住你。我让他们这样做,我还写了一段代码让他们看着你。基本上只在 Z 轴上向你旋转。但问题是,当它们在玩家右侧生成时,敌人正在远离玩家。但如果我旋转并开始移动,它们就会试图修复自己。这是我的脚本:

void FixedUpdate () {
        Vector3 difference = player.position - transform.position;
        float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotationZ);
        Vector2 toTarget = player.transform.position - transform.position;
        float speed = 1.5f;
         
        transform.Translate(toTarget * speed * Time.deltaTime);
    }

认为 Translate 是相对修饰符。因此,当您在 Translate 本身中指定方向时,运动会变得混乱。使用Vector3.MoveTowards解决问题。如果你的游戏是 2D 的,你也可以像下面这样使用 Vector2

Vector2.MoveTowards(currentPosition, targetPosition, step);

您最好可以像这样修复此代码,并将 MoveTowards 的 return 值设置为 transform.Position

void FixedUpdate () {
    Vector3 difference = player.position - transform.position;
    float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
    transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotationZ);
    float speed = 1.5f;
    
    // replace Translate to MoveTowards
    transform.position = Vector3.MoveTowards(transform.position, player.position, Time.deltaTime * speed);
}