Страница 1 из 1

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

СообщениеДобавлено: 19 апр 2017, 17:33
siriusspark
Всем привет.

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

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

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

Одним словом нужны советы - что делать? В чем у меня могут быть ошибки. Код приложу вечером, сейчас нет возможности. Ну и еще, может у кого есть более адекватная реализация подобного метода управления? Код за меня написать не прошу, прошу лишь подсказки - как это сделать? У меня по сути весь проект висит на тормозах из-за того что главное действующее лицо - корабль - не летает как положено))))

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

СообщениеДобавлено: 22 апр 2017, 23:49
Kabanelloo
http://dropmefiles.com/qYkvA

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

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

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

Посмотри , не че так работает.

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

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

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


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

Статейка на хабре:
https://habrahabr.ru/post/279231/

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

СообщениеДобавлено: 23 апр 2017, 17:51
Anonymyx
А если совсем просто:
Синтаксис:
Используется 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()

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

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

СообщениеДобавлено: 24 апр 2017, 09:54
siriusspark
TxN, спасибо)) Статью кстати читал, и даже исходники скачивал, но как то не добрался до них до сих пор, надо посмотреть)

Anonymyx, насчет поворотов физикой тоже думал, немного правда не пойму как это реализовать, ибо в поворотах в трехмерном пространстве у меня проблемы)))) Собственно из-за этого и не могу как надо сделать то что хочу) Понятно что AddTorque, но как его правильно применить чтобы корабль грамотно поворачивался за мышом?

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

СообщениеДобавлено: 24 апр 2017, 19:22
Anonymyx
Пересечение векторов корабль.перед и нормализованного вектора направления до позиции курсора переведенного в мировые координаты с Z + 100, например.
Полученный вектор умноженный на силу в AddTorque. Вот один из простых реализаций.
Насчет грамотности не могу ручаться :)