Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 13.05.2019, 15:41   #1
PHPenguin
AnyKey`щик
 
Регистрация: 13.05.2019
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Движение объекта к игроку

Здравствуйте. В Blitz3D новичок, и вот не могу реализовать движение объекта к игроку, MoveEntity работает немного по-другому. В справочнике команд пытался найти нужную команду среди других, отвечающих за движение объекта, но как-то не особо помогло. Подскажите пожалуйста, как это правильно делается?
(Offline)
 
Ответить с цитированием
Старый 13.05.2019, 18:30   #2
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Ответ: Движение объекта к игроку

Двигать объект в текущие координаты игрока? Насколько помню там еще есть TranslateEntity
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Старый 13.05.2019, 21:02   #3
PHPenguin
AnyKey`щик
 
Регистрация: 13.05.2019
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Движение объекта к игроку

Сообщение от ARA Посмотреть сообщение
Двигать объект в текущие координаты игрока? Насколько помню там еще есть TranslateEntity
Не совсем так, я не могу сделать реализацию именно движения в сторону игрока, т.е. например противник идет к нему издалека
(Offline)
 
Ответить с цитированием
Старый 13.05.2019, 23:14   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Движение объекта к игроку

Сообщение от PHPenguin Посмотреть сообщение
Не совсем так, я не могу сделать реализацию именно движения в сторону игрока, т.е. например противник идет к нему издалека
Каждый кадр сдвигать понемножку в сторону игрока?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 13.05.2019, 23:29   #5
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Движение объекта к игроку

MoveEntity отлично подходит, команда двигает по 3-м координатам относительно текущего положения объекта.
TranslateEntity двигает не зависимо от положения объекта.

AlignToVector — поможет повернуть бота в сторону игрока (выравнивание по вектору). Да и вообще что угодно по вектору из двух точек.

Есть ещё PointEntity, ему достаточно дать объекты он сам всё повернёт, но с этим были какие-то проблемы.

Последний раз редактировалось Arton, 14.05.2019 в 00:08. Причина: чёт я туплю >_<
(Offline)
 
Ответить с цитированием
Старый 13.05.2019, 23:40   #6
PHPenguin
AnyKey`щик
 
Регистрация: 13.05.2019
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Движение объекта к игроку

Сообщение от ABTOMAT Посмотреть сообщение
Каждый кадр сдвигать понемножку в сторону игрока?
Да, будто бы объект движется на меня
(Offline)
 
Ответить с цитированием
Старый 13.05.2019, 23:43   #7
PHPenguin
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
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 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 за это полезное сообщение:
PHPenguin (14.05.2019), St_AnGer (14.05.2019)
Старый 14.05.2019, 00:49   #9
PHPenguin
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
mingw
ПроЭктировщик
 
Аватар для mingw
 
Регистрация: 01.01.2016
Сообщений: 138
Написано 71 полезных сообщений
(для 155 пользователей)
Ответ: Движение объекта к игроку

Оставлю свои 5 копеек.

Все вышепривиденные функции работают через матричное преобразование обьекта. А это является не совсем оптимальным вариантом.

Будет гораздо быстрее и грамотнее вычислить дельту угла без матричных преобразований. А уже в конце модифицировать матрицу объекта результирующими значениями.

Собственно именно для этих целей и существует две отличные функции, которые вычисляют дельту угла по нужной оси: - DeltaPitch() и DeltaYaw()
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 09:07.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com