Как исправить направление движения персонажа после применения скрипта к врагу?

Как исправить скрипт врага для того, чтобы он правильно преследовал игрока и останавливался на заданном расстоянии, без нежелательного перемещения влево после его применения?
  • 26 июля 2024 г. 19:23
Ответы на вопрос 2
Для исправления направления движения персонажа после применения скрипта к врагу, можно добавить проверку на текущее положение игрока и изменить направление движения врага в соответствии с этим. Это можно сделать, используя функцию LookAt или изменяя угол поворота врага.

Чтобы исправить скрипт врага для правильного преследования игрока и остановки на заданном расстоянии, следует убедиться, что враг двигается непосредственно в сторону игрока, используя функцию MoveTowards или другие методы перемещения. Также можно добавить условие остановки при достижении заданного расстояния между врагом и игроком. 

Добавление конкретных координат или цели для перемещения врага также может помочь избежать нежелательных перемещений в сторону после его применения. Важно также правильно настроить параметры скорости и расстояния для корректного и плавного преследования игрока.
else if (Vector2.Distance(transform.position, player.position) < stoppingdistance && (Vector2.Distance(transform.position, player.position) > retreatDistance))
        {
            transform.position = this.transform.position;
        }

это не нужно transform.position = this.transform.position; не имеет смысл
else if (Vector2.Distance(transform.position, player.position) < retreatDistance)
        {
            transform.position = Vector2.MoveTowards(transform.position, player.position, -speed * Time.deltaTime);
        }

проблема скорее всего тут, вероятно лучше не скорость умножать на минус 1 а таргет позишен

float dist=Vector2.Distance(transform.position,player.position);
if(dist>stoppingdistance)transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime);
else if(dist<retreatDistance) transform.position = Vector2.MoveTowards(transform.position, player.position*-Vector2.one, speed * Time.deltaTime); //тут надо смотреть на игра сбоку или вид с верху

а ну и конечно stoppingdistance>retreatDistance
а и да если этот скрип есть на персонаже то персонаж будет сам от себя убегать
Похожие вопросы