StrannikY
@StrannikY
Программирую на C#, часто загораюсь идеями,учусь.

Как сделать ускорение свободного падения(Unity)?

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

Подробности: в скрипте движения персонажа есть переменная OnFloor, которая проверяет,стоит ли игрок на земле или нет.
  • Вопрос задан
  • 368 просмотров
Решения вопроса 1
StrannikY
@StrannikY Автор вопроса
Программирую на C#, часто загораюсь идеями,учусь.
Я придумал,как это решить.
В общем,все решается таким скриптом:
if (!OnFloor) #если игрок НЕ стоит на земле
        {
            Physics.gravity = Vector3.Lerp(Physics.gravity, new Vector3(0, -120f, 0), Time.deltaTime); #постепенно увеличивает гравитацию.
        }
        else
        {
            Physics.gravity = new Vector3(0, -9.81f, 0); #Возвращает гравитацию в исходное положение при падении на землю
        }


new Vector3 - это максимальная скорость падения. Не рекомендую значение устанавливать больше (0, -200f, 0),потому что персонаж может пролетать сквозь тонкие объекты.

new Vector3 можно заменить на Physics.gravity * 1.5f , но в таком случае при падении с высокой горы ваш персонаж провалится сквозь землю.

Time.deltaTime вы можете умножить на какое-нибудь число (чем больше число,тем быстрее разгон),тогда получится так: Time.deltaTime * 2f
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы