|
3D-программирование Вопросы, касающиеся программирования 3D мира |
13.05.2019, 15:41
|
#1
|
AnyKey`щик
Регистрация: 13.05.2019
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Движение объекта к игроку
Здравствуйте. В Blitz3D новичок, и вот не могу реализовать движение объекта к игроку, MoveEntity работает немного по-другому. В справочнике команд пытался найти нужную команду среди других, отвечающих за движение объекта, но как-то не особо помогло. Подскажите пожалуйста, как это правильно делается?
|
(Offline)
|
|
13.05.2019, 18:30
|
#2
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Ответ: Движение объекта к игроку
Двигать объект в текущие координаты игрока? Насколько помню там еще есть TranslateEntity
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
13.05.2019, 21:02
|
#3
|
AnyKey`щик
Регистрация: 13.05.2019
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Движение объекта к игроку
Сообщение от ARA
Двигать объект в текущие координаты игрока? Насколько помню там еще есть TranslateEntity
|
Не совсем так, я не могу сделать реализацию именно движения в сторону игрока, т.е. например противник идет к нему издалека
|
(Offline)
|
|
13.05.2019, 23:14
|
#4
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Движение объекта к игроку
Сообщение от PHPenguin
Не совсем так, я не могу сделать реализацию именно движения в сторону игрока, т.е. например противник идет к нему издалека
|
Каждый кадр сдвигать понемножку в сторону игрока?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
13.05.2019, 23:29
|
#5
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Движение объекта к игроку
MoveEntity отлично подходит, команда двигает по 3-м координатам относительно текущего положения объекта.
TranslateEntity двигает не зависимо от положения объекта.
AlignToVector — поможет повернуть бота в сторону игрока (выравнивание по вектору). Да и вообще что угодно по вектору из двух точек.
Есть ещё PointEntity, ему достаточно дать объекты он сам всё повернёт, но с этим были какие-то проблемы.
Последний раз редактировалось Arton, 14.05.2019 в 00:08.
Причина: чёт я туплю >_<
|
(Offline)
|
|
13.05.2019, 23:40
|
#6
|
AnyKey`щик
Регистрация: 13.05.2019
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Движение объекта к игроку
Сообщение от ABTOMAT
Каждый кадр сдвигать понемножку в сторону игрока?
|
Да, будто бы объект движется на меня
|
(Offline)
|
|
13.05.2019, 23:43
|
#7
|
AnyKey`щик
Регистрация: 13.05.2019
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Движение объекта к игроку
Сообщение от Arton
MoveEntity отлично подходит, команда двигает по 3-м координатам относительно текущего положения объекта.
TranslateEntity двигает не зависимо от положения объекта.
AlignToVector — поможет повернуть бота в сторону игрока. Да и вообще что угодно по вектору из двух точек.
Есть ещё PointEntity, ему достаточно дать объекты он сам всё повернёт, но с этим были какие-то проблемы.
|
У меня вот такой код:
TranslateEntity enemy, EntityX(Player)*.01, 0, EntityZ(Player)*.01
PointEntity enemy,Player
Но enemy двигается как ко мне, так и от меня, по-разному в общем
|
(Offline)
|
|
14.05.2019, 00:01
|
#8
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Движение объекта к игроку
Сообщение от PHPenguin
TranslateEntity enemy, EntityX(Player)*.01, 0, EntityZ(Player)*.01
PointEntity enemy,Player
|
Зачем умножать?
Я посмотрел свой старый код и вспомнил в чём разница:
PointEntity полностью поворачивает (условно «лицом») к указанному объекту по всем 3-м осям.
По этому у тебя враг не туда двигается.
AlignToVector — выравнивание по вектору, грубо говоря тоже, но ему настраиваешь каждую ось отдельно.
TranslateEntity уже сказал что он двигает независимо от ориентации объекта.
Правильнее будет так:
;Поворачиваем врага в сторону игрока в плоскости X, Z
AlignToVector enemy,EntityX(player,1) - EntityX(enemy,1),0,EntityZ(player,1) - EntityZ(enemy,1),3,.5
;Двигаем по Z
MoveEntity enemy,0,0,.01
+Z сторона это «лицо» объекта.
P. S. За подробностями команд в справку.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Arton за это полезное сообщение:
|
|
14.05.2019, 00:49
|
#9
|
AnyKey`щик
Регистрация: 13.05.2019
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Движение объекта к игроку
Сообщение от Arton
Зачем умножать?
Я посмотрел свой старый код и вспомнил в чём разница:
PointEntity полностью поворачивает (условно «лицом») к указанному объекту по всем 3-м осям.
По этому у тебя враг не туда двигается.
AlignToVector — выравнивание по вектору, грубо говоря тоже, но ему настраиваешь каждую ось отдельно.
TranslateEntity уже сказал что он двигает независимо от ориентации объекта.
Правильнее будет так:
;Поворачиваем врага в сторону игрока в плоскости X, Z
AlignToVector enemy,EntityX(player,1) - EntityX(enemy,1),0,EntityZ(player,1) - EntityZ(enemy,1),3,.5
;Двигаем по Z
MoveEntity enemy,0,0,.01
+Z сторона это «лицо» объекта.
P. S. За подробностями команд в справку.
|
Воо, работает на отлично! Спасибо)
|
(Offline)
|
|
14.05.2019, 18:12
|
#10
|
ПроЭктировщик
Регистрация: 01.01.2016
Сообщений: 144
Написано 74 полезных сообщений (для 164 пользователей)
|
Ответ: Движение объекта к игроку
Оставлю свои 5 копеек.
Все вышепривиденные функции работают через матричное преобразование обьекта. А это является не совсем оптимальным вариантом.
Будет гораздо быстрее и грамотнее вычислить дельту угла без матричных преобразований. А уже в конце модифицировать матрицу объекта результирующими значениями.
Собственно именно для этих целей и существует две отличные функции, которые вычисляют дельту угла по нужной оси: - DeltaPitch() и DeltaYaw()
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:37.
|