Пропы · 3 мин чтения

У пропа FiveM нет коллизии? Почему игроки проходят сквозь него

Читать на:: English · Español · Français · Deutsch · Português · Italiano · Polski · Türkçe

Prop Collision Editor с игровой скамейкой prop_bench_05: её шесть коробок коллизии нарисованы поверх модели, каждая с указанной поверхностью

Вы спавните свой проп и проходите сквозь него. Или машины проезжают сквозь него, пули пролетают насквозь, либо он висит над землёй на ладонь. Всё это сводится к коллизии пропа: невидимой форме, которую игра использует для физики, отдельной от модели, которую вы видите.

Где находится коллизия пропа

Проп, который вы спавните через 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, если он у вас есть. Или выберите проп игры по имени, чтобы начать с него.

  1. Fit to the model (подогнать под модель) для быстрой подгонки, или добавьте части вручную: + Box (коробка), + Sphere (сфера), + Capsule (капсула), + Cylinder (цилиндр). Двигайте, поворачивайте и меняйте размер каждой над моделью.
  2. Если нужна только часть модели (столешница, ножка), используйте Pick triangles (выбрать треугольники), затем Fit to the picked triangles (подогнать под выбранные треугольники).
  3. Задайте каждой части Surface (поверхность: её звук, следы и пыль при ударе) и выберите What hits it (что в неё попадает): Everything (всё) для цельного пропа, или Shots and camera only (только выстрелы и камера), Not vehicles (не машины) и другие, если нужно меньше.
  4. Скачайте. Если вы также перетащили .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

Другие руководства

Все руководства →

Каждый инструмент можно попробовать бесплатно: 5 экспортов в день. Войдите через Discord, чтобы пользоваться ими.