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

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

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

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

Ответ
 
Опции темы
Старый 06.03.2014, 17:37   #1
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Проблемы с интерактивностю

Здрасте всем, есть проблема. Есть карта с предметами, с которыми персонаж может интерактировать, но для этого нужно чтобы персонаж по нажатию клавиши был в определённом месте с определённым углом поворота, дабы анимации персонажа и предмета совпали, и всё было красиво. Вопрос в том, как это сделать? Есть только дерзкие, неподходящие идеи, по типу "Телепортации" - по нажатию кнопки перосонаж моментально окажется там, где надо, но хотелось бы плавности и хоть какой-нибудь красоты.
(Offline)
 
Ответить с цитированием
Старый 06.03.2014, 17:45   #2
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Проблемы с интерактивностю

Мм... Судя по некоторым играм "телепортацией" это и делается.

Например есть наковальня. Берём и анимируем в максе персонажа вместе с наковальней, как он на ней куёт. Грузим в игру, скрываем персонажа, остаётся наковальня. Игрок подходит к предмету и начинает использовать, персонаж скрывается (которым управляет игрок), включается его копия которая стоит рядом с наковальней. Проигрывается анимация. Для плавности перехода, сделать проверку на расстояние и с какой стороны находится игрок, можно тупо триггером на пересечении.
Как-то так

Лучше в голову не пришло.
(Offline)
 
Ответить с цитированием
Старый 06.03.2014, 17:48   #3
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Проблемы с интерактивностю

ну вот есть пара пробелем, первая - это то, что игра с видом от первого лица, и вторая - то, что проект практически и базируется на этой самой интерактивности, и поэтому я хотел сделать её менее шовной
(Offline)
 
Ответить с цитированием
Старый 06.03.2014, 17:53   #4
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Проблемы с интерактивностю

по нажатию кнопки действия, персонаж подходит в нужную позицию, разворачивается, и только после этого начинается анимация уже самого действия, все просто...
(Offline)
 
Ответить с цитированием
Старый 06.03.2014, 17:54   #5
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Re: Проблемы с интерактивностю

Сообщение от CostUm Посмотреть сообщение
ну вот есть пара пробелем, первая - это то, что игра с видом от первого лица, и вторая - то, что проект практически и базируется на этой самой интерактивности, и поэтому я хотел сделать её менее шовной
Для плавности перехода можно сделать автодоповорот камеры игрока (при нахождение в нужном месте), до координат анимированый камеры в максе. Затем когда координаты совпадают, включается анимация ковки.

P. S. То что Dstalk выше успел написать
(Offline)
 
Ответить с цитированием
Старый 06.03.2014, 17:57   #6
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Проблемы с интерактивностю

ну а вот как так сделать, что бы он подошёл куда надо и развернулся?
(Offline)
 
Ответить с цитированием
Старый 06.03.2014, 18:01   #7
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Проблемы с интерактивностю

сравниваешь разницу координат игрока и "нужного места" объекта (можно сделать dummy в максе и далее findchild найти), и каждый кадр двигаешь перса и проверяется расстояние, отслеживать состояния игрока можно отдельной переменной (например 1-игрок движется, 2-игрок поворачивается, 3-игрок уже на месте, идет анимация действия), тоже самое с поворотом. типа того...
(Offline)
 
Ответить с цитированием
Старый 06.03.2014, 18:10   #8
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Проблемы с интерактивностю

это получается надо сначала развернуть персонажа, затем сделать MoveEntity, затем опять развернуть, но уже в сторону предмета, и там уже проигрывать анимацию? мне именно эти моменты интересны, а с переменными можно разобраться в принципе
(Offline)
 
Ответить с цитированием
Старый 06.03.2014, 23:44   #9
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Проблемы с интерактивностю

как мне заставить двигаться персонажа к именно той самой опеределёной точке? каким образом?
(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 00:01   #10
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Проблемы с интерактивностю

ну, ищешь нужную точку
  point=FindChild(Entity,"Name")
далее включаешь "первую фазу" - разворот, нужно посчитать необходимый угол разворота, самый простой (и дурацкий) способ - повернуть игрока к цели, запомнить угол, развернуть назад:
  current_angle#=EntityYaw(Player)
  PoinEntity(Player,point)
  need_angle#=EntityYaw(Player)
  RotateEntity(Player,0,current_angle#,0)
  Phase=1
посчитали, включили первую фазу, далее уже в основном цикле
  If Phase=1
    If Int(current_angle#)<>Int(need_angle#) Then
      current_angle#=current_angle#+Sign(need_angle#-current_angle#)
      RotateEntity(Player,0,current_angle#,0)
    Else
      Phase=2
    EndIf
  EndIf
Если углы совпадают - переходим во вторую фазу (переджвижение). С ним все аналогично, но разница в позиции находится функцией EntityDistance(Player,point) - проверяем каждый раз в цикле, двигаем перса.
(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 00:31   #11
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Проблемы с интерактивностю

походу не понял как правильно, сделал

If Phase=2
If EntityDistance(player,point)<1 Then
MoveEntity player,0,0,0.1
Else
Phase=3
EndIf
EndIf
(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 00:42   #12
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Проблемы с интерактивностю

знак перепутал, у тебя если меньше одного написано в условии...
(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 00:51   #13
CostUm
ПроЭктировщик
 
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
Re: Проблемы с интерактивностю

хах да попутал) но тем не менее переход на 3-ю фазу не происходит
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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