У меня есть корабль Rigidbody
. На корабле есть MeshCollider
. Этот коллайдер установлен как Convex.
У меня есть основание, это программно созданный Mesh
. На этой сетке естьMeshCollider
. Этот коллайдер не установлен как выпуклый.
В большинстве случаев это работает. Я не проваливаюсь сквозь пол. Примерно 40% времени я могу проезжать сквозь стены.
Пытаясь решить эту проблему, для каждой секции стены я добавил дочерний элемент GameObject
, помеченный как статический. На этом GameObject
есть BoxCollider
. Я сделал коллайдер на 0,1 больше, чем часть стены. Это означает, что коллайдеры перекрываются, и не должно быть промежутка, через который можно провалиться.
Как вы можете видеть на изображении ниже, я все еще могу проехать через стену несколько раз.
Что мне делать, чтобы я не мог проезжать сквозь стены?
Я пробовал:
Добавляем
Rigidbody
на землю, помеченный как кинематический. Для этого я удалил всеMeshCollider
и использовал всеBoxCollider
. Мне пришлось использовать всеBoxCollider
, так как у вас может быть Convex Rigidbody. Это не решило проблему.Убрал
MeshCollider
из плеера и использую одиночныйBoxCollider
. На данный момент в сцене больше нетMeshCollider
. Это не решило проблему.Оба
Rigidbody
s настроены на постоянное обнаружение столкновений.
Мне интересно, работает ли вообще система UNity3d Physics: /
Rigidbody.MovePosition
иRigidbody.MoveRotation
, чтобы двигать корабль. - person Justin808   schedule 09.03.2016