И так, у игрока есть 3 разные гравитации:
Для прыжка
Для падения
Для падения если не прыгал
Значения изменяются в зависимости от состояния передвижения игрока (ходьба, бег, быстрый бег).
Чисто технически, во время приседания, у игрока нету возможности быстрее тормозить, а значит он будет тормозить гораздо медленнее.
Также, мы помним что гравитация может изменяться в зависимости силы объекта, которую тот приложит (физика 7 класс). Таким образом, если значение jumpHoldTimer слишком большое (оно убовляется при длинном прыжке), гравитация должна прибавляться автоматически, и возвращаться к обратному значению при прикосновении к полу.
Также у нас есть склоны. Склоны в основном никак не влияют на скорость игрока, что не есть хорошо. Нам нужно сделать несколько склонов, и в зависимости от них, скорость игрока будет меняться в делениях.
Также, если игрок присядет на склон, нужно будет сосчитать какой именно это склон и перевести игрока в state "SlidingState". Используя простую физику, нам нужно будет вычислить в какую сторону будет двигаться игрок, и используя метод bouncy ball либо делать его скольжение быстрее либо меньше. Если скорость скольжения равна 0, то игрок автоматически переходит в state "NormalState".
Также, если игрок решит постоять на крутых склонах, игра пошлёт его нахуй за такую борзость, и гравитация заставит игрока медленно пойти вниз, ровным счётом нахуй.
Основываясь на физике Super Mario Bros. и Super Mario World а также физики real life, acceleration игрока должна тоже меняться в зависимости от его передвижения и состояния. Если игрок на замле, у него есть точка опоры об которую он может совершить быстрый и чёткий поворот. Но воздух не земля, поэтому в воздухе такой трюк провернуть не получится, а значит не будет возможности быстро затормозить.
















0 comments