|
3D-программирование Вопросы, касающиеся программирования 3D мира |
06.03.2014, 17:37
|
#1
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Проблемы с интерактивностю
Здрасте всем, есть проблема. Есть карта с предметами, с которыми персонаж может интерактировать, но для этого нужно чтобы персонаж по нажатию клавиши был в определённом месте с определённым углом поворота, дабы анимации персонажа и предмета совпали, и всё было красиво. Вопрос в том, как это сделать? Есть только дерзкие, неподходящие идеи, по типу "Телепортации" - по нажатию кнопки перосонаж моментально окажется там, где надо, но хотелось бы плавности и хоть какой-нибудь красоты.
|
(Offline)
|
|
06.03.2014, 17:45
|
#2
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,313 полезных сообщений (для 5,350 пользователей)
|
Ответ: Проблемы с интерактивностю
Мм... Судя по некоторым играм "телепортацией" это и делается.
Например есть наковальня. Берём и анимируем в максе персонажа вместе с наковальней, как он на ней куёт. Грузим в игру, скрываем персонажа, остаётся наковальня. Игрок подходит к предмету и начинает использовать, персонаж скрывается (которым управляет игрок), включается его копия которая стоит рядом с наковальней. Проигрывается анимация. Для плавности перехода, сделать проверку на расстояние и с какой стороны находится игрок, можно тупо триггером на пересечении.
Как-то так
Лучше в голову не пришло.
|
(Offline)
|
|
06.03.2014, 17:48
|
#3
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Проблемы с интерактивностю
ну вот есть пара пробелем, первая - это то, что игра с видом от первого лица, и вторая - то, что проект практически и базируется на этой самой интерактивности, и поэтому я хотел сделать её менее шовной
|
(Offline)
|
|
06.03.2014, 17:53
|
#4
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: Проблемы с интерактивностю
по нажатию кнопки действия, персонаж подходит в нужную позицию, разворачивается, и только после этого начинается анимация уже самого действия, все просто...
|
(Offline)
|
|
06.03.2014, 17:54
|
#5
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,313 полезных сообщений (для 5,350 пользователей)
|
Ответ: Re: Проблемы с интерактивностю
Сообщение от CostUm
ну вот есть пара пробелем, первая - это то, что игра с видом от первого лица, и вторая - то, что проект практически и базируется на этой самой интерактивности, и поэтому я хотел сделать её менее шовной
|
Для плавности перехода можно сделать автодоповорот камеры игрока (при нахождение в нужном месте), до координат анимированый камеры в максе. Затем когда координаты совпадают, включается анимация ковки.
P. S. То что Dstalk выше успел написать
|
(Offline)
|
|
06.03.2014, 17:57
|
#6
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Проблемы с интерактивностю
ну а вот как так сделать, что бы он подошёл куда надо и развернулся?
|
(Offline)
|
|
06.03.2014, 18:01
|
#7
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: Проблемы с интерактивностю
сравниваешь разницу координат игрока и "нужного места" объекта (можно сделать dummy в максе и далее findchild найти), и каждый кадр двигаешь перса и проверяется расстояние, отслеживать состояния игрока можно отдельной переменной (например 1-игрок движется, 2-игрок поворачивается, 3-игрок уже на месте, идет анимация действия), тоже самое с поворотом. типа того...
|
(Offline)
|
|
06.03.2014, 18:10
|
#8
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Проблемы с интерактивностю
это получается надо сначала развернуть персонажа, затем сделать MoveEntity, затем опять развернуть, но уже в сторону предмета, и там уже проигрывать анимацию? мне именно эти моменты интересны, а с переменными можно разобраться в принципе
|
(Offline)
|
|
06.03.2014, 23:44
|
#9
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Проблемы с интерактивностю
как мне заставить двигаться персонажа к именно той самой опеределёной точке? каким образом?
|
(Offline)
|
|
07.03.2014, 00:01
|
#10
|
Разработчик
Регистрация: 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
|
ПроЭктировщик
Регистрация: 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
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: Проблемы с интерактивностю
знак перепутал, у тебя если меньше одного написано в условии...
|
(Offline)
|
|
07.03.2014, 00:51
|
#13
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Проблемы с интерактивностю
хах да попутал) но тем не менее переход на 3-ю фазу не происходит
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:22.
|