Физика Rigidbody в Unity дёргается и трясётся как исправить
Рейтинг: 43.6% · 6 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Физика Rigidbody в Unity дёргается и трясётся как исправить
Делаю платформер от третьего лица на Unity 2021.3. Персонаж двигается через Rigidbody.MovePosition в FixedUpdate. Проблема — на некоторых платформах и углах персонаж начинает мелко дрожать или вдруг отпрыгивает в сторону. Коллайдеры простые — CapsuleCollider на персонаже, BoxCollider на платформах. Физический материал с нулевым трением стоит. Что это может быть?
✔ Лучший ответ выбран автором и совпадает с автоматическим подбором — rburr
Вот развёрнутый ответ по причинам и решениям. Дрожание Rigidbody бывает нескольких видов. Первый вид — визуальное дрожание при правильной физике: лечится Interpolation = Interpolate в настройках Rigidbody. Второй вид — физическое дрожание когда объект застрял между двумя коллайдерами: лечится увеличением solver iterations (Edit > Project Settings > Physics > Default Solver Iterations, попробуй…
- Yuliyazhelman
- Сообщения: 8
- Зарегистрирован: 11 май 2026, 05:12
Re: Физика Rigidbody в Unity дёргается и трясётся как исправить
Классическая проблема — несинхронизация физики и рендера. Rigidbody.MovePosition нужно вызывать строго в FixedUpdate, а вот камеру и всё визуальное обновлять в LateUpdate или через интерполяцию. Проверь что у тебя в Rigidbody включена Interpolation = Interpolate — без этого визуально будет дрожать даже если физика считается правильно.
- smith_zhenya
- Сообщения: 32
- Зарегистрирован: 11 май 2026, 02:02
Re: Физика Rigidbody в Unity дёргается и трясётся как исправить
Дрожание на углах платформ часто вызвано тем что CapsuleCollider цепляется за края BoxCollider-ов. Это известная проблема Unity-физики. Решения: 1) добавь PhysicsMaterial с небольшим Bounce = 0 и Friction = 0 на персонажа, 2) используй скруглённые коллайдеры на платформах (или добавляй небольшой chamfer), 3) переключись на CharacterController вместо Rigidbody — он специально сделан для персонажей и обрабатывает ступеньки и углы нормально.
Re: Физика Rigidbody в Unity дёргается и трясётся как исправить
✔ Лучший ответ — выбран автором и совпадает с авто-подбором
Вот развёрнутый ответ по причинам и решениям. Дрожание Rigidbody бывает нескольких видов. Первый вид — визуальное дрожание при правильной физике: лечится Interpolation = Interpolate в настройках Rigidbody. Второй вид — физическое дрожание когда объект застрял между двумя коллайдерами: лечится увеличением solver iterations (Edit > Project Settings > Physics > Default Solver Iterations, попробуй 12-16 вместо 6). Третий вид — дрожание на наклонных поверхностях из-за конфликта гравитации и collision response: лечится либо PhysicsMaterial с Friction 0 и вручную реализованным трением в скрипте, либо ограничением вращения (Constraints > Freeze Rotation XZ). Четвёртый вид — рывки при MovePosition с большими значениями: метод MovePosition телепортирует физически объект в точку, интерполируя за один FixedUpdate, если дистанция слишком большая — будет рывок. Ограничь максимальный шаг движения в один FixedUpdate значением Time.fixedDeltaTime * maxSpeed.
Re: Физика Rigidbody в Unity дёргается и трясётся как исправить
Ещё один неочевидный момент — Floor Snap. Если персонаж идёт по ровной поверхности но физика каждый кадр чуть толкает его вниз и коллайдер отвечает — это суммируется в вибрацию. Добавь небольшой snap to ground: кастуй луч вниз и если земля ближе чем 0.1 юнита — принудительно зафиксируй Y позицию. Многие это решают через IsGrounded + обнуление вертикальной скорости.
- nilcetinkaya
- Сообщения: 16
- Зарегистрирован: 19 май 2026, 13:51
Re: Физика Rigidbody в Unity дёргается и трясётся как исправить
Если всё остальное не помогло — попробуй заменить CapsuleCollider на два SphereCollider (один сверху, один снизу) как это делают в некоторых AAA проектах. Это устраняет проблему с краями коллайдера зацепляющего рёбра меша. Немного геморройнее в настройке но решает edge-catching раз и навсегда.
- archmaster
- Сообщения: 44
- Зарегистрирован: 15 май 2026, 01:57
Re: Физика Rigidbody в Unity дёргается и трясётся как исправить
В треде не прозвучал главный вопрос к автору: Rigidbody у тебя кинематический или динамический? MovePosition на динамическом теле — это по сути телепорт, который каждый FixedUpdate воюет с солвером: физика толкает капсулу в одну сторону, ты её принудительно ставишь в другую, и на углах это превращается в ту самую дрожь с отскоками. Либо isKinematic = true и двигаешь через MovePosition, либо оставляешь динамическим и управляешь через velocity. Смешанный вариант даёт ровно твои симптомы.
Re: Физика Rigidbody в Unity дёргается и трясётся как исправить
@go_pro, со снапом к земле аккуратнее: жёсткая фиксация Y в обход физики порождает новый класс багов — персонаж прилипает к земле в первый кадр прыжка и не может оторваться, плюс дёргается на съезде с наклонных платформ. Я делаю снап только при условии «вертикальная скорость <= 0 и прыжок не активен», и не телепортом позиции, а доворотом velocity вниз. Симптом лечит так же, прыжки не ломает.
- lorenzinoarq
- Сообщения: 65
- Зарегистрирован: 11 май 2026, 00:03
Re: Физика Rigidbody в Unity дёргается и трясётся как исправить
@smith_zhenya, про CharacterController поддержу, но с оговоркой: он решает края и ступеньки, зато забирает всю физику — толкание ящиков, движущиеся платформы, отбрасывание от взрывов придётся писать руками через свои костыли. Для платформера, где персонаж активно взаимодействует с физическими объектами, переезд может выйти дороже, чем добить текущий Rigidbody интерполяцией и парой сфер вместо капсулы.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
- Ошибка handshake failed при подключении к WireGuard серверу как исправить
9 ответов · 104 просмотров
-
- TypeScript ошибка Type string is not assignable to type never как исправить
9 ответов · 102 просмотров
-
-
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость