Предотвращение столкновения коллайдера через местность - PullRequest
1 голос
/ 29 сентября 2019

Я использую ландшафт в Unity 2019.2.1f1 и пользовательскую сетку пещеры с коллайдером сетки.

Мой персонаж, у которого Capsule Collider намного больше, чем вход в пещеру, не сможетчтобы войти внутрь. Но из-за округлости обоих коллайдеров он может вступить в силу в пещере, проскальзывая по местности коллайдер.

Я думаю, что скорость не чрезмерна, я 'м перемещая персонажа с помощью rb.MovePosition() в FixedUpdate(), и я установил его обнаружение столкновения твердого тела на Непрерывный спекулятивный ( перепробовал все "непрерывные" режимы )

В анимации ниже вы можете видеть сетку пещеры и капсульный коллайдер вокруг персонажа.

Как я могу предотвратить это? Как я могу сказать Unity: «Я хочу, чтобы коллайдеры были твердыми, а не зефирными»?

collider_glitch

1 Ответ

2 голосов
/ 01 октября 2019

Коллайдеры в Unity являются твердыми. Они не способны на какую-либо мягкую физику, и единственный момент, когда они будут искажать друг друга, - это когда вы заставляете их.

Здесь вы устанавливаете жесткую позицию тела в невозможное место. Игра старается изо всех сил, чтобы соответствовать вашему жесткому телу, несмотря на отсутствие места.

Вы можете

  • Использовать только силы и скорости. Вы можете просто установить скорость в выбранном вами направлении и установить ее равной 0, когда вы прекращаете движение, или использовать AddForce, что в основном то же самое.

  • Продолжайте использоватьMovePosition, но используйте SphereCast или CapsuleCast, чтобы проверить, достаточно ли места для первого движения.

...