Добавить в корзинуПозвонить
Найти в Дзене
Stronghold of gamedev

Неочевидные проблемы межпланетной физики

Проплыв море аркадных космических симуляторов и причалив на берег отчаяния, условный человечек решил посоревноваться с Шоном Мюрреем, но не столько в красноречии, сколько в геймдизайне. И любые формулировки вопроса " двигло для космического экшона", адресованные гуглу, выдают лишь ссылки на смрадные форумы реддита, где обыватели захламляют сервера своим мнением. Но идея игры с космическими эльфами и возможностью грабить космические корованы слишком амбициозна. Как принудить свои нейроны серфить по волнам логического мышления? Что по гравитации? Если условный человечек двинется вперед, то когда-нибудь он придет назад, тоесть на ту точку, от которой одиссею он и начал. А почему?
Земля шарообразная (извините если кого обидел) и на ней есть гравитация, именно поэтому пешая прогулка не закончилась где-нибудь рядом с Юпитером. Любая 3D среда всё же представлена в виде плоскостей, в движке в том числе. Это значит, что даже через n-ное расстояние, ось не станет дугообразной, а значит это прид

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

И любые формулировки вопроса " двигло для космического экшона", адресованные гуглу, выдают лишь ссылки на смрадные форумы реддита, где обыватели захламляют сервера своим мнением.

Но идея игры с космическими эльфами и возможностью грабить космические корованы слишком амбициозна. Как принудить свои нейроны серфить по волнам логического мышления?

Что по гравитации?

Если условный человечек двинется вперед, то когда-нибудь он придет назад, тоесть на ту точку, от которой одиссею он и начал. А почему?
Земля шарообразная (извините если кого обидел) и на ней есть гравитация, именно поэтому пешая прогулка не закончилась где-нибудь рядом с Юпитером.

Любая 3D среда всё же представлена в виде плоскостей, в движке в том числе. Это значит, что даже через n-ное расстояние, ось не станет дугообразной, а значит это придется симулировать. Или нет?

Реализованные готовые методы физики в движках определяют это самое "вниз" всегда одинаково - в зависимости от глобальной оси координат, а значит если на Южном Полюсе постоять еще можно, то на Северном упадете вниз головой. Варианты?

-2

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

Достаточно грамотно будет стрелять лучами и определять расстояние,
но вряд ли от каждой планеты, ведь их может быть много. Скорее игрок должен обладать некоторым детектером планет, тем же лучем например, который будет рассчитывать расстояние до ближайшей и устанавливать гравитационное притяжение.

-3

Кстати о самом важном : простейшая формула, прикрученная к вектору перемещения, выглядит примерно так

gravity -= mass * Time.Deltatime

Прикручивается она к оси Y, но в случае с планетами ось непостоянна.
Вероятнее всего менять её стоит в случае вхождения игроком в стратосферу, где притяжение становится уже действительно ощущаемым.

Границы гравитационного воздействия и начало "стратосферы" можно ловко менять, прикрутив, например, переменную "planetSize" от с значениями от 1 до 1000, они олицетворяют "массу" планеты, но в более простом и понятном виде. Так сделал я.

Наконец же, чтобы не упасть с Северного Полюса, необходимо поменять локальную ось Y у игрока, в юнити это делается методом InverseTransformDirection, где роль новой вертикальной оси примет направление от игрока до центра координат планеты, тоесть уже выпущенный луч. Это позволит бегать по планете и не падать.

Извините, накипело...

Соседние статьи с канала :
Как сломали Fallout 3
Будущее игровой анимации
Игры изнутри : физика