@Afafks123132132165

Как сделать движение существа к еде?

Например у меня есть существо и оно должно идти к еде.У существа есть определенный радиус в котором она может чувствовать еду.Ее чувства я сделал но как сделать движение к еде?То есть как сделать так то бы существо плавно пошло к еде?Что то я не понимаю помогите мне.
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вероятно, игра перерисовывается кадр за кадром?
Когда существо почуяло близкий холодильник, надо обновлять его координаты, на чуть более близкие к координатам холодильника:
x = x + k * (xTarget - x);
y = y + k * (yTarget - y);
В этом ответе подробнее: Какой алгоритм подойдет для описания полета насекомого?

jsFiddle, демонстрирующий такую «погоню» за целями.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Для начала надо решить - будет ли существо обладать инерцией, или оно движется в сильно вязкой среде.

Для вязкой среды всё просто:
  1. вычисляем вектор до еды: { X_еды-X_существа, Y_еды-Y_существа }
  2. вычисляем длину этого вектора по теореме Пифагора;
  3. если длина вектора больше, чем шаг_существа - делим каждую компоненту этого вектора на его длину и умножаем на размер_шага_существа (иногда шаг_существа вычисляется по количеству времени после прошлой итерации);
  4. а если длина вектора меньше, чем шаг_существа - то оставляем вектор как есть;
прибавляем к координатам_существа модифицированный (или не модифицированный) вектор.

С инерцией всё сложно, т.к. ускорение существа обычно сильно зависит от направления и скорости. Характер движения - зависит от того, какой у существа нрав.
Например, существо может ускоряться в сторону еды, когда еда далеко, и тормозить, когда еда близко.
А бывает так, что для поворота - существо должно остановиться, развернуться и потом бежать к еде.

Ну и понятно, что если существо бежит к еде на максимальной скорости - то оно ускориться сильнее уже не может.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы