Управление космическим кораблем.

Программирование на Юнити.

Управление космическим кораблем.

Сообщение siriusspark 19 апр 2017, 17:33

Всем привет.

Знаю, подобные темы мусолились на форуме не раз, но решения конкретно моей проблемы не нашел.

Собственно суть: имеется космолет. Двигается вперед с помощью приложения силы, повороты совершает вслед за курсором с помощью метода LookAt и Lerp-a для плавности. Точнее к координатам курсора привязана пустышка, которая летит где то впереди корабля и за ней он собственно и следует. Ну не суть, это все работает. Стреляет корабль в направлении этой пустышки, прицел тоже привязан к курсору. То есть по сути стреляет корабль по прямой, но в результате поворота корабля за курсором снаряды летят туда, куда смотрит прицел. По точности стрельбы тоже нет вопросов.
Короче говоря, стиль управления я стремлюсь максимально привязать к стилю в игре Стармагеддон-2. Кто не в теме - вот геймплей: https://youtu.be/RWy2hlqD6bs

Вопрос в другом - камера. А именно ее следование за кораблем. Вот никак оно не получается так как в стармагеддоне. Привязывал камеру к кораблю различными методами, все равно какие то косяки. Стандартный SmoothFollow, на который я поначалу понадеялся, тоже подвел, вообще не то происходит. Плюс еще при некоторых реализациях привязки камеры при маневрах типа мертвой петли корабль (или камера, хз, непонятно) начинает бешенно вертеться вокруг продольной оси. Ну и тут еще вопрос - может и в поворотах корабля у меня все таки все как то через одно место, потому и такая фигня с камерой?

Одним словом нужны советы - что делать? В чем у меня могут быть ошибки. Код приложу вечером, сейчас нет возможности. Ну и еще, может у кого есть более адекватная реализация подобного метода управления? Код за меня написать не прошу, прошу лишь подсказки - как это сделать? У меня по сути весь проект висит на тормозах из-за того что главное действующее лицо - корабль - не летает как положено))))
Аватара пользователя
siriusspark
UNIт
 
Сообщения: 106
Зарегистрирован: 10 сен 2015, 09:14

Re: Управление космическим кораблем.

Сообщение Kabanelloo 22 апр 2017, 23:49

http://dropmefiles.com/qYkvA

Я взял это из стандарт ассета в проекте который идет к 5 юнити Example Project.

Но он адекватно работать не будет там нужно камеру правильно ирархично выставить .

http://image.prntscr.com/image/f23745e2bd814d76b82e6b1342b06f9a.png

Посмотри , не че так работает.
Kabanelloo
UNITрон
 
Сообщения: 163
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea

Re: Управление космическим кораблем.

Сообщение TxN 23 апр 2017, 17:40

Года полтора назад делал космическую игру, где реализовал базовые механики типичного аркадного космосима. Код и прочее выложил на гитхаб, в свободное пользование всеми желающими.
Если интересно, можешь глянуть, и взять оттуда что нужно. Говнокод конечно тот еще, из-за недостатка опыта и очень сжатых сроков, но основные принципы говнокодом не испортишь.

Вот тут видно, как реализована камера в игре, ну и прочие фишки до кучи. Если мне не изменяет память, камеру можно сделать посвододней, просто поправив один-два коэффициента.


Репозиторий на гитхабе:
https://github.com/TxN/TWG6-Spacesim

Статейка на хабре:
https://habrahabr.ru/post/279231/
TxN
UNец
 
Сообщения: 37
Зарегистрирован: 25 июл 2014, 14:13

Re: Управление космическим кораблем.

Сообщение Anonymyx 23 апр 2017, 17:51

А если совсем просто:
Синтаксис:
Используется csharp
        transform.position = Vector3.Lerp(transform.position, camPoint.position, fallowSpeed * Time.deltaTime);
        transform.rotation = Quaternion.Lerp(transform.rotation, camPoint.root.rotation, rotSpeed * Time.deltaTime);

camPoint - дочерняя точка корабля. LateUpdate()

И да, поворот корабля за мышкой какой-то замудреный у вас. Если двигаете с помощью физики, то и поворачивать должны физикой.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Управление космическим кораблем.

Сообщение siriusspark 24 апр 2017, 09:54

TxN, спасибо)) Статью кстати читал, и даже исходники скачивал, но как то не добрался до них до сих пор, надо посмотреть)

Anonymyx, насчет поворотов физикой тоже думал, немного правда не пойму как это реализовать, ибо в поворотах в трехмерном пространстве у меня проблемы)))) Собственно из-за этого и не могу как надо сделать то что хочу) Понятно что AddTorque, но как его правильно применить чтобы корабль грамотно поворачивался за мышом?
Star Wars: Path of lust. 3D-адвенчур 18+ по мотивам Звездных войн | _www.patreon.com/starlordgames
Аватара пользователя
siriusspark
UNIт
 
Сообщения: 106
Зарегистрирован: 10 сен 2015, 09:14

Re: Управление космическим кораблем.

Сообщение Anonymyx 24 апр 2017, 19:22

Пересечение векторов корабль.перед и нормализованного вектора направления до позиции курсора переведенного в мировые координаты с Z + 100, например.
Полученный вектор умноженный на силу в AddTorque. Вот один из простых реализаций.
Насчет грамотности не могу ручаться :)
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3