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

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

Вернуться   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,743
Написано 5,461 полезных сообщений
(для 15,676 пользователей)
Ответ: Движение объекта к игроку

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

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

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

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,036
Написано 2,320 полезных сообщений
(для 5,359 пользователей)
Ответ: Движение объекта к игроку

Сообщение от 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
Сообщений: 149
Написано 77 полезных сообщений
(для 179 пользователей)
Ответ: Движение объекта к игроку

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

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

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

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


Опции темы

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

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


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


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