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

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

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

Добавление конкретных координат или цели для перемещения врага также может помочь избежать нежелательных перемещений в сторону после его применения. Важно также правильно настроить параметры скорости и расстояния для корректного и плавного преследования игрока.
<pre><code class="cs">else if (Vector2.Distance(transform.position, player.position) &lt; stoppingdistance &amp;&amp; (Vector2.Distance(transform.position, player.position) &gt; retreatDistance))
        {
            transform.position = this.transform.position;
        }</code></pre> <br/> это не нужно  transform.position = this.transform.position; не имеет смысл <br/> <pre><code class="cs">else if (Vector2.Distance(transform.position, player.position) &lt; retreatDistance)
        {
            transform.position = Vector2.MoveTowards(transform.position, player.position, -speed * Time.deltaTime);
        }</code></pre> <br/> проблема скорее всего тут, вероятно лучше не скорость умножать на минус 1 а таргет позишен <br/> <br/> <pre><code class="cs">float dist=Vector2.Distance(transform.position,player.position);
if(dist&gt;stoppingdistance)transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime);
else if(dist&lt;retreatDistance) transform.position = Vector2.MoveTowards(transform.position, player.position*-Vector2.one, speed * Time.deltaTime); //тут надо смотреть на игра сбоку или вид с верху</code></pre> <br/> а ну и конечно stoppingdistance>retreatDistance <br/> а и да если этот скрип есть на персонаже то персонаж будет сам от себя убегать
Похожие вопросы