Страница 1 из 1

Логика перемещения по поинтам

СообщениеДобавлено: 05 дек 2021, 02:41
wakanda
Есть 2D topdown. Есть враг который перемещается по 4 точкам Transform.
Есть скрипт. Но проблема заключается в том, что rb.MovePosition выполняется всего лишь на секунду или даже на долю,в тот момент когда waitTime <= 0. Соответственно враг никогда не дойдёт до точки( он лишь чутка дёргается, а если добавить скорости то уже телепортируется). А если убрать таймер,то чего начинает штормить как и следовало ожидать. Как тут лучше поступить?
Синтаксис:
Используется csharp
void MovePozition(Vector2 direction)
    {
        if (waitTime <= 0)
        {
            //transform.position = Vector2.MoveTowards(transform.position, point[Random.Range(0, 3)].position, 7 * Time.deltaTime);
            rb.MovePosition((Vector2)transform.position + (direction * moveSpeed * Time.deltaTime));
            waitTime = startWaitTime;
            Debug.Log("go");

           
        }
        else
        {
            waitTime -= Time.deltaTime;
        }

    }

Re: Логика перемещения по поинтам

СообщениеДобавлено: 05 дек 2021, 09:59
Xtir
А почему именно двигать нужно rb? Почему не навмеш или просто трансформ?
ЗЫ двигать нужно с каждым апдэйтом.

Re: Логика перемещения по поинтам

СообщениеДобавлено: 05 дек 2021, 12:01
wakanda
Xtir писал(а):А почему именно двигать нужно rb? Почему не навмеш или просто трансформ?
ЗЫ двигать нужно с каждым апдэйтом.

При помощи transform тоже самое. Насчёт навмеша незнал что он в 2d существует.
То что двигать с каждым обновлением это да, но if (waitTime <= 0) не даёт этого сделать, а без него он дёргается между всеми поинтами

Re: Логика перемещения по поинтам

СообщениеДобавлено: 05 дек 2021, 14:39
Xtir
А зачем вообще waitTime? Ты же ему мешаешь ходить тем самым.
Навмеша в 2д нет, я думал это 3д :)

Re: Логика перемещения по поинтам

СообщениеДобавлено: 13 дек 2021, 18:11
trh
НавМеш в 2д есть. NavMeshPlus называется.