Zefirot
@Zefirot

Что делать чтобы персонаж не зависал на краю?

Сложилась такая вот неприятная ситуация, если персонажем быстро подойти к обрыву то он падает, а если понемногу то он зависает в воздухе.
62b1c97f44311847743554.png
проблема скорее всего в "ощущении земли", анимация падения начинает проигрываться когда теряется земля под ногами, определение земли под ногами пробовал двумя способами
1й - сharacterController.isGrounded
2й - private bool isGrounded{ get { return Physics.Raycast(BotModel.transform.position, -Vector3.up, 0.1f); }}
само падение
Velocity.y += Gravity * Time.deltaTime;
Velocity = transform.forward * Speed + Vector3.up * Velocity.y;
сharacterController.Move(Velocity * Time.deltaTime);

первый хуже так как не всегда получается прыгнуть, 2й стабильный, но оба показывают что земли нет а персонаж висит в воздухе так как коллайдер контроллера (я так понимаю) не даёт упасть
62b1cde955569301852975.jpeg
получается визуально он должен упасть, анимация падения проигрывается, а он не падает...
единственное если уменьшить у контроллера радиус то падает нормально, но тогда в стены проваливается...
Как его правильно сделать?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
ugamesdeveloper
@ugamesdeveloper
Unity developer
Думаю, проблема в силе трения и том, что ты толкаешь персонажа вниз самостоятельно. Попробуй повесить на персонажа компонент rigidbody и использовать гравитацию. Или уменьши силу трения с помощью физического материала )
Для лучшего трекинга земли под ногами рекомендую использовать Physics.OverlapSphere
ezgif-2-fa6aea5d77.gif
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@NIKROTOS
Начинающий программист.
Кубический тригер возможно поможет(как в марио)
Можно попробовать поиграть со значениями Slope Limit
Советую взять переводчик и изучить данную страницу:
https://docs.unity3d.com/Manual/class-CharacterCon...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы