Войти
ПрограммированиеФорумФизика

Bullet + невесомость + character = сложности

Страницы: 1 2 Следующая »
#0
23:20, 9 янв. 2015

Всем привет! И тебе, и тебе тоже.

Есть игрок в роли космонавта и камера с видом от первого лица. Камера крутится свободно мышкой. Космонавт летает в невесомости и иногда ему надо протискиваться в узкие люки, которые намного меньше роста человека, но голова и плечи пролазят. Тело космонавта представлено в форме вытянутой капсулы. Суть в том, что капсула имеет некую ориентацию в пространстве, и чтобы она пролезла в узкий люк, ее надо будет повернуть определенным образом. А это нефига не удобно, она должна повернуться как-то автоматически. Чтобы было понятнее вот картика:
character problem | Bullet + невесомость + character = сложности

И соответственно вопрос - как это все можно разрулить? Сейчас у меня в голове два варианта:
1. Тело космонавта сделать большим шаром, диаметр которого равен росту. Однако, при возникновении столкновения шар начинает уменьшаться до размеров головы. Соответственно при столкновении с люком тело в итоге уменьшится и пролезет. А затем снова вырастет.
2. Автоматически разворачивать капсулу игрока так, чтобы ее вертикальная ось совпадала с осью люка (направление вида камеры сохраняется).

Ситуация, что тело космонавта в игре передает полноценный размер тела человека или больший важна, т.к. надо чтобы камера не приближалась близко к полу внутри космической станции. Надеюсь, понятно объяснил, к дискуссии готов :)


#1
17:29, 10 янв. 2015

Если с капсулой, то не сделаешь резкие повороты в узких туннелях. Наверное, без уменьшения тут не обойтись. Правда, я не знаю, поддерживает ли Буллет динамическое изменение размеров у геометрии.

Оффтоп: интересное совпадение, я делаю что-то похожее, тоже невесомость планируется - http://dlanggamedev.blogspot.ru/p/atrium.html. Хотя у меня-то фантастика, а в данном случае, я так понимаю, речь идет о реалистичном симуляторе МКС из этой темы?

#2
21:57, 10 янв. 2015

Gecko
я делаю не совсем симулятор, но геймплей от твоей игры сильно отличается.  еще не доделал?

#3
0:45, 11 янв. 2015

В процессе. Недавно дописал физику, сейчас вот над геймплеем работаю и контентом.

#4
12:37, 11 янв. 2015

BingoBongo

делайте игрока не капсулой, а rag-doll ом, тогда скелетной анимацией измените его положение тела и он пройдет в трубу. Капсула, конечно, быстрее, поэтому ее можно использовать для обычных пеших коллизий.

#5
13:11, 11 янв. 2015

BingoBongo
> А это нефига не удобно, она должна повернуться как-то автоматически.
Уж посчитать куда капсулу повернуть можно и руками, не надо никаких костылей.

#6
15:17, 11 янв. 2015

ArchiDevil
ее же не просто повернуть, а повернуть в определенной ситуации, которую надо определить. да и вычислить ось тоже не просто. + после поворота капсула не должна ничего задеть. мне кажется, можно тупо использовать две модели - капсула и шарик размером с голову, которые могут переключаться. но этот вариант тоже мутноватый, надо начать делать, там все более понятно станет.

#7
16:20, 11 янв. 2015

В Space Engineers используют капсулу. Иногда приходится мучаться чтобы тупо попасть в дверь в невесомости, и подбирать правильную ориентацию, иначе не пролезешь. Если есть "правильная" гравитация, включается нормальное движение по полу. По личному мнению в подобных ситуациях игроку надо выдавать возможность "схватиться руками за стену/дверь/лестницу", т.е как-то привязаться к какой-нибудь поверхности и перемещаться относительно неё. Иначе получается бессмысленное битие головой об стену (серьёзно, буквально именно так в игре и выглядит)

#8
17:32, 11 янв. 2015

BingoBongo
Сделай кнопку "пройти", пусть оно само по триггеру проходит как надо. Можно даже физику в этот момент не считать для игрока. Самое простое, на мой взгляд, и далеко не самое плохое решение.

#9
21:51, 11 янв. 2015

в дырку люка прикольно попадать, когда она вместе со станцией крутится. не хочется от этого отказываться.

#10
22:36, 11 янв. 2015

BingoBongo
А зачем с переключением схему делать? Пускай голова будет сферой нужного диаметра, чтобы пролезло всё тело. Игрок управляет только головой, а всё остальное тело-капсула пусть на rigid joint-е болтается за сферой. Сфера полезла в "трубу" - всё тело автоматически сориентируется за ней "паровозиком"

#11
23:14, 11 янв. 2015

Andy51
мне тело для визуального отображения может вообще не потребуется. но будет фича, когда у скафандра ботинки на магнитной подошве. это позволит ходить по поверхности станции шагом, вот для этой штуки потребуется капсула. также, когда залетаешь в станцию и можешь уткнуться носом в пол (т.к. физически летает голова без тела), то это выглядит стремно. поэтому летающей головой точно обойтись не получится.

оффтоп. недавно обнаружил что Bullet Physics не может адекватно поддерживать свое жесткое соединение btFixedConstraint (да и вообще любое соединение для массивных тел). в таком случае соединение становится мягким и тела могут болтаться друг относительно друга. коррекция CMF и ERP не помогает. на офф сайте обещали в будущем исправиться и советовали использовать btCompoundShape. это работает, но архитектуру очень усложняет. кароче, феее..

#12
23:29, 11 янв. 2015

BingoBongo
> оффтоп. недавно обнаружил что Bullet Physics не может адекватно поддерживать
> свое жесткое соединение
Можно чуть подробнее?
Все, что я нашел:
https://code.google.com/p/bullet/issues/detail?id=769

#13
23:45, 11 янв. 2015

BingoBongo
>когда залетаешь в станцию и можешь уткнуться носом в пол
упал как будто. Это же фича :)
Да и космонавты в невесомости на станции вроде перемещаются не пузом вперед, а головой.
Если так нужен реализм, то можно сделать индикатор положения тела относительно камеры. Пусть игрок подлетая к поверхности\люку сам корректирует положение своего тела заблаговременно, ну как в реальности.

#14
0:14, 12 янв. 2015

-Eugene-
конечно http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=78… amp;view=next

RadianTOR
я с точки зрения геймплея не против рассмотрения игроком пола, но смотрится хреново и непривычно )  влетать в люк должно быть удобно - корректировать положение тела вручную, неудобно. мож внатуре камеру отделить, и не подпускать близко к сталкиваемой поверхности, а летать шариком-головой.

Страницы: 1 2 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.