Я заставил это работать, но на самом деле просто использовал Raycast и проверил угол, а затем нажал игрока вниз с помощью вертикальной скорости. Но тогда это не позволяет игроку прыгать при движении вверх или вниз по лестнице, и даже несмотря на то, что я добавил для этого предложение с if (!Input("Jump)") и groundedTimer, равным 0,3f секунды, движение все равно остается нестабильным.< /p>
Как и в самом начале сцены, отладка показывает, что игрок НЕ заземлен, и моя анимация отражает это, потому что воспроизводится анимация падения. Добавление isGrounded = true; to Start() работает, но это не кажется хорошим решением. Я просто пытаюсь заставить игрока прилипать к каждой поверхности, по которой он движется, но при этом иметь возможность нормально прыгать. При спуске по лестнице мой игрок взлетает в воздух, а затем падает.
Я также не знаю, как Raycast или SphereCast будут работать на разных поверхностях, таких как пересеченная местность, закругленные объекты и т. д. , или внизу лестницы/склона и т. д., где Raycast больше не будет работать. Но замена его на SphereCast заставляет его работать на краях объектов, чего не должно быть. До сих пор использование слоев было непоследовательным, если только я не добавлял невидимые коллайдеры к каждому отдельному объекту с определенным слоем, чтобы предотвратить такие крайние случаи, но я тоже не знаю, разумно ли это.
Я не могу найти никакой актуальной и полезной информации или ресурсов/руководств. Нет ли чего-нибудь более подходящего для понимания того, как с этим справиться?
Подробнее здесь: https://stackoverflow.com/questions/791 ... the-ground
Заставить контроллер персонажа прилипать к земле? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение