Пропы · 3 мин чтения
У пропа FiveM нет коллизии? Почему игроки проходят сквозь него
Читать на:: English · Español · Français · Deutsch · Português · Italiano · Polski · Türkçe

Вы спавните свой проп и проходите сквозь него. Или машины проезжают сквозь него, пули пролетают насквозь, либо он висит над землёй на ладонь. Всё это сводится к коллизии пропа: невидимой форме, которую игра использует для физики, отдельной от модели, которую вы видите.
Где находится коллизия пропа
Проп, который вы спавните через CreateObject, несёт коллизию внутри собственной модели, в .ydr (или .yft). Так устроены пропы игры: из 11 410 пропов, архетип которых указывает словарь физики, у 11 352 коллизия внутри модели. Файл .ybn — это другое: в нём карты и MLO хранят свою статичную коллизию: карта — в мировых координатах, интерьер — там, где он размещён.
Когда у собственного пропа нет коллизии, обычно причина одна из таких:
- У модели её нет. Её экспортировали без неё (часто бывает у моделей из других игр или прямо из Blender).
.ytypеё не указывает. У архетипа естьphysicsDictionary; без него игра рисует проп, но не использует его коллизию.- Она игнорирует то, что должна останавливать. Каждая часть коллизии задаёт, с чем она сталкивается. Из 8000 пропов игры, которые мы проверили, 7176 частей коллизии настроены останавливать только выстрелы и камеру. По их флагам коллизия, состоящая только из таких частей, пропускает игроков и машины.
- Неверная форма. Выпуклая оболочка не может иметь дыр: она заполняет пространство под столом или внутри арки.
Почему проп парит или проваливается
CreateObject ставит точку опоры пропа по координатам, которые вы задали. Если точка в середине модели, половина уходит под землю; если коллизия заходит под модель, проп стоит на ней и кажется парящим. Проп вообще без коллизии падает сквозь землю, если он не заморожен.
Сначала посмотрите коллизию
Перетащите .ydr (или .yft) вместе с .ytd в Model Inspector и включите Collision (коллизия): она рисуется поверх модели, окрашенная по поверхности, рядом с freemode-педом. В разделе модели указано, какая у неё коллизия или "none inside" (внутри нет), и где её точка опоры: внизу, наверху или на несколько метров над низом. Это бесплатно и ничего не меняет.
Добавьте или исправьте
Откройте проп в Prop Collision Editor: перетащите его .ydr или .yft, с его .ytd, чтобы увидеть текстуры, и .ytyp, если он у вас есть. Или выберите проп игры по имени, чтобы начать с него.
- Fit to the model (подогнать под модель) для быстрой подгонки, или добавьте части вручную: + Box (коробка), + Sphere (сфера), + Capsule (капсула), + Cylinder (цилиндр). Двигайте, поворачивайте и меняйте размер каждой над моделью.
- Если нужна только часть модели (столешница, ножка), используйте Pick triangles (выбрать треугольники), затем Fit to the picked triangles (подогнать под выбранные треугольники).
- Задайте каждой части Surface (поверхность: её звук, следы и пыль при ударе) и выберите What hits it (что в неё попадает): Everything (всё) для цельного пропа, или Shots and camera only (только выстрелы и камера), Not vehicles (не машины) и другие, если нужно меньше.
- Скачайте. Если вы также перетащили
.ytyp, получите.zipс моделью и.ytyp, бокс которого увеличивается, чтобы вместить коллизию, если она выступает за его пределы.
Части, которых вы не трогали, возвращаются в точности такими, какими были. В .yft (ломаемом пропе или части машины) можно двигать и менять размер существующих кусков, но не добавлять или удалять их и не менять, с чем они сталкиваются.
Делаете проп сами?
Если проп из .glb, задайте коллизию при создании: в GLB to Prop есть Fitted (convex hull), Its own triangles (собственные треугольники) для пропов, в которые можно войти, и полов, Box around it и None, и записывает .ytyp с его словарём физики. (Всё преобразование.)
Вопросы
- Можно ли просто положить .ybn рядом с пропом?
.ybn— это статичная коллизия для карты или интерьера, размещённая там, где находится карта. Проп, который вы спавните, движется со своей коллизией, которая находится внутри его.ydrили.yft.- У пропа есть коллизия, но машины проезжают сквозь него. Почему?
- Чаще всего его части настроены не сталкиваться с машинами. В Prop Collision Editor задайте What hits it как Everything.
- Почему я не могу пройти под столом?
- Выпуклая оболочка — это одна замкнутая форма без дыр. Используйте отдельные коробки для столешницы и ножек или Its own triangles в GLB to Prop.

Инструмент для этого
Prop Collision Editor
Перетащите проп и придайте коллизии форму по модели: коробки, сферы, капсулы и цилиндры, каждая с поверхностью и тем, что она останавливает.
Открыть Prop Collision EditorПригодится также: Model Inspector · GLB to Prop


