Движение объекта к игроку
Здравствуйте. В Blitz3D новичок, и вот не могу реализовать движение объекта к игроку, MoveEntity работает немного по-другому. В справочнике команд пытался найти нужную команду среди других, отвечающих за движение объекта, но как-то не особо помогло. Подскажите пожалуйста, как это правильно делается?
|
Ответ: Движение объекта к игроку
Двигать объект в текущие координаты игрока? Насколько помню там еще есть TranslateEntity :)
|
Ответ: Движение объекта к игроку
Цитата:
|
Ответ: Движение объекта к игроку
Цитата:
|
Ответ: Движение объекта к игроку
MoveEntity отлично подходит, команда двигает по 3-м координатам относительно текущего положения объекта.
TranslateEntity двигает не зависимо от положения объекта. AlignToVector — поможет повернуть бота в сторону игрока (выравнивание по вектору). Да и вообще что угодно по вектору из двух точек. Есть ещё PointEntity, ему достаточно дать объекты он сам всё повернёт, но с этим были какие-то проблемы. |
Ответ: Движение объекта к игроку
Цитата:
|
Ответ: Движение объекта к игроку
Цитата:
Код:
TranslateEntity enemy, EntityX(Player)*.01, 0, EntityZ(Player)*.01 |
Ответ: Движение объекта к игроку
Цитата:
Я посмотрел свой старый код и вспомнил в чём разница: PointEntity полностью поворачивает (условно «лицом») к указанному объекту по всем 3-м осям. По этому у тебя враг не туда двигается. AlignToVector — выравнивание по вектору, грубо говоря тоже, но ему настраиваешь каждую ось отдельно. TranslateEntity уже сказал что он двигает независимо от ориентации объекта. Правильнее будет так: Код:
;Поворачиваем врага в сторону игрока в плоскости X, Z P. S. За подробностями команд в справку. |
Ответ: Движение объекта к игроку
Цитата:
|
Ответ: Движение объекта к игроку
Оставлю свои 5 копеек.
Все вышепривиденные функции работают через матричное преобразование обьекта. А это является не совсем оптимальным вариантом. Будет гораздо быстрее и грамотнее вычислить дельту угла без матричных преобразований. А уже в конце модифицировать матрицу объекта результирующими значениями. Собственно именно для этих целей и существует две отличные функции, которые вычисляют дельту угла по нужной оси: - DeltaPitch() и DeltaYaw() |
Часовой пояс GMT +4, время: 15:55. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot