Перейти к содержимому
CRUSHFORMV1.1.0
ПОЛУЧИТЬ НА FAB

АВТОМОБИЛЬАДАПТЕР АВТОМОБИЛЯ

Адаптер автомобиля

Адаптер автомобиля Crushform подключает плагин к эктору с колёсами. Добавьте его один раз и перечислите колёса. Затем он создаёт вмятины и грязь, стёкла, шины, звук качения и эффекты, звук двигателя, разрушение разрушаемых объектов и отклик на удары, а также отвечает на вопросы плагина о машине. Используйте его для колёсного эктора, который не является Chaos-автомобилем, например для прицепа. Chaos-автомобилю нужен адаптер Chaos, который берёт колёса из компонента движения.

Адаптер — один компонент на экторе. Он отвечает на вопросы плагина о машине и создаёт компоненты плагина под фиксированными именами на каждом инстансе. У каждого компонента свой переключатель, они перечислены в разделе «Основные настройки» ниже. Быстрый старт показывает компоненты по одному.

Колёса берутся из списка Wheels или из SetWheels во время игры. Каждый кадр адаптер трассирует землю под каждым колесом. Трасса начинается в ступице и заканчивается на радиусе шины плюс Ground Probe Margin, поэтому шина, которая немного не доходит до земли, всё равно её касается. Скорость колеса берётся из того, как его компонент сдвинулся с прошлого кадра, поэтому у прицепа на буксире колёса вращаются без двигателя. Пыль, которую поднимает колесо, зависит от этой скорости.

Authority решает, какой инстанс симулирует машину и засчитывает её удары:

  • Server — по умолчанию. Сервер симулирует машину и отклоняет отчёты о ударах от клиентов.
  • Owning Client делает источником ударов машины тот инстанс, который ею управляет. Сервер делает так, пока машиной никто не управляет. Сервер принимает сообщённый удар, только если изменение скорости не больше недавней пиковой скорости машины плюс Ram Allowance Mps. Для более лёгкого кузова, который уступает, допуск увеличивается.

На выделенном сервере адаптер не трассирует колёса, потому что там их нечем показывать.

Шина, которая упирается в препятствие, пропустила бы в него обод. Адаптер сдвигает всё колесо от препятствия на выталкивание, которое запрашивает шина, поэтому шина вминается вокруг препятствия, а обод остаётся снаружи. Выталкивание ограничено UCFTireProfile::MaxPush; за этим пределом обод может войти в препятствие. Шина, у которой все контакты мельче, чем позволяет её резина, не выталкивается.

Выталкивание переводится в пространство родителя колеса один раз, когда приходит. Для колеса, родитель которого поворачивается относительно автомобиля, например поворотного кулака, выталкивание во время поворота неверно. Как отключить выталкивание для такого колеса, показано в руководстве Интерфейсы хоста.

Blueprint, который переопределяет Set Crushform Tire Wheel Offsets, расставляет колёса сам и выталкивания не получает. Тогда шина вминается так же, как без выталкивания, до своего Max Deflection, и обод может войти в препятствие.

Прицеп — это эктор с мешами колёс и без компонента движения. Перечислите его колёса в Wheels. Адаптер берёт скорость каждого колеса из того, как оно сдвинулось с прошлого кадра, поэтому звук качения, эффекты качения и пыль работают, пока прицеп тянут, и без двигателя внутри него.

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

Шаги для самого адаптера те же, что и для собственного автомобиля, поэтому следуйте им там. Для варианта с прицепом нужны только эти отличия.

  1. Добавьте адаптер и перечислите колёса, как описано в Свой автомобиль, в части про адаптер автомобиля. Шаги здесь не повторяются.
Crushform
Wheels
Wheels4 Array elements
Index [ 0 ]SM_Wheel_Front_L
WheelSM_Wheel_Front_L
Radius0.0 cm
Index [ 1 ]SM_Wheel_Front_R
WheelSM_Wheel_Front_R
Radius0.0 cm
Index [ 2 ]SM_Wheel_Rear_L
WheelSM_Wheel_Rear_L
Radius0.0 cm
Index [ 3 ]SM_Wheel_Rear_R
WheelSM_Wheel_Rear_R
Radius0.0 cm
Ground ChannelVisibility
Ground Probe Margin2.0 cm
Список Wheels адаптера Crushform Vehicle Adapter с четырьмя колёсами.
  1. У прицепа нет компонента движения, поэтому список Wheels — его единственная настройка колёс. Для каждого колеса откройте его запись и выберите компонент колеса в Wheel: список показывает компоненты сцены Blueprint, поэтому ничего не нужно вводить вручную. Задайте Radius для колеса, у меша которого нет границ, как описано в таблице «Основные настройки» ниже (0 берёт половину высоты границ меша).
  2. Проверьте Authority и переключатели функций и здесь. Все переключатели включены по умолчанию.
Crushform
AuthorityServer
Deform ProfileDA_CF_DefaultProfile
Tire ProfileDA_CF_DefaultTireProfile
Ram Allowance Mps15.0 m/s
Features
Dirt and Dents
Glass
Tires
Rolling Sound
Rolling FX
Engine Sound
Impact Feedback
Breaks Props
Категория Crushform у адаптера Crushform Vehicle Adapter. Все переключатели функций включены.

В Blueprint вызовы, которые сообщают адаптеру, что делает машина, описаны в Свой автомобиль, в разделе о передаче адаптеру действий машины. График показывает SetBraking и SetCabinMuffled на CF_Adapter:

График показывает SetBraking и SetCabinMuffled на CF_Adapter.

Те же вызовы в C++. Получите адаптер у эктора, затем вызовите функции. Каждая сигнатура — та, что в заголовке адаптера. Модули Crushform, которые вы вызываете, должны быть в вашем Build.cs, как в Установке.

#include "CFVehicleAdapterComponent.h"
void AMyVehicle::Tick(float DeltaSeconds)
{
Super::Tick(DeltaSeconds);
if (UCFVehicleAdapterComponent* Adapter = FindComponentByClass<UCFVehicleAdapterComponent>())
{
Adapter->SetBraking(BrakeInput);
Adapter->SetCabinMuffled(bListenerInCabin);
// The front side's deepest dent, 0 untouched to 1: the damage the server has confirmed.
const float FrontMaxDent = Adapter->GetDamageZones().Front.Max;
}
}

Чтобы прочитать повреждение в области кузова вместо стороны, вызовите GetDamageInBox с FBox в корневом пространстве владельца.

Каждая строка — свойство UCFVehicleAdapterComponent, если в строке не назван другой тип. Жирным указаны подписи переключателей в панели Details. Значения — значения по умолчанию из кода.

СвойствоЧто делаетПо умолчанию
UCFVehicleAdapterComponent::AuthorityКакой инстанс симулирует машину и засчитывает её удары. Server: это делает сервер и отклоняет отчёты клиентов. Owning Client: это делает инстанс, который ею управляет, и он сообщает свои удары.Server
UCFVehicleAdapterComponent::DeformProfileВмятины и грязь кузова. Пусто берёт значение по умолчанию из Project Settings, в разделе Crushform.пусто
UCFVehicleAdapterComponent::TireProfileШины. Пусто берёт значение по умолчанию из Project Settings, в разделе Crushform Tire.пусто
UCFVehicleAdapterComponent::bDirtAndDentsDirt and Dents: кузов покрывается вмятинами и грязнеет. Стёкла и грязь на колёсах тоже этого требуют.вкл.
UCFVehicleAdapterComponent::bGlassGlass: панели трескаются и разбиваются. Нужен Dirt and Dents, который находит панели.вкл.
UCFVehicleAdapterComponent::bTiresTires: шины деформируются на мешах колёс.вкл.
UCFVehicleAdapterComponent::bRollingSoundRolling Sound: каждое колесо воспроизводит звук качения своей поверхности. На выделенном сервере молчит.вкл.
UCFVehicleAdapterComponent::bRollingFXRolling FX: каждое колесо показывает эффект качения своей поверхности. На выделенном сервере его нет.вкл.
UCFVehicleAdapterComponent::bEngineSoundEngine Sound: двигатель воспроизводит свой звук. Также нужен переключатель звука двигателя в Crushform Engine.вкл.
UCFVehicleAdapterComponent::bImpactFeedbackImpact Feedback: удары воспроизводят звуки и эффекты на каждом инстансе. Вместе с Dirt and Dents воспроизводятся и удары навесных деталей.вкл.
UCFVehicleAdapterComponent::bBreaksPropsBreaks Props: машина ломает разрушаемые объекты, в которые въезжает.вкл.
UCFVehicleAdapterComponent::WheelsКолёса, которые трассирует адаптер, по одному FCFAdapterWheel на каждое. Заменяется во время игры через SetWheels.пусто
FCFAdapterWheel::WheelКомпонент колеса: меш или компонент сцены, который вращается вместе с колесом.нет
FCFAdapterWheel::RadiusРадиус шины в сантиметрах. 0 берёт половину высоты границ меша колеса, когда список впервые используется.0 см
UCFVehicleAdapterComponent::GroundChannelКанал, по которому колёса трассируют землю.Visibility
UCFVehicleAdapterComponent::GroundProbeMarginНа сколько выше земли шина всё ещё её касается, в сантиметрах.2 см
UCFVehicleAdapterComponent::ImpactEventTagТег удара, который воспроизводит авария. Пусто — звука удара не будет.Crushform.Impact.Vehicle.Crash
UCFVehicleAdapterComponent::ImpactImpulsePerKgForFullIntensityИзменение скорости, в см/с, которое воспроизводится в полную силу.600 см/с
UCFVehicleAdapterComponent::ImpactMinImpulsePerKgИзменение скорости, в см/с, ниже которого удар ничего не воспроизводит.50 см/с
UCFVehicleAdapterComponent::PropContactMinSpeedCmSНиже этой скорости, в см/с, машина не ломает разрушаемые объекты.50 см/с
UCFVehicleAdapterComponent::bOverrideRollingSoundTuningИспользовать RollingSoundTuning для этой машины вместо настроек Crushform Wheels.выкл.
UCFVehicleAdapterComponent::bOverrideRollingFXTuningИспользовать RollingFXTuning для этой машины вместо настроек Crushform Wheels.выкл.
UCFVehicleAdapterComponent::bOverrideCabinMufflingИспользовать CabinVolumeScale и CabinLowPassFrequency этой машины в SetCabinMuffled, а не значения из настроек.выкл.
UCFVehicleAdapterComponent::CabinVolumeScaleГромкость звука качения и двигателя внутри салона, когда переопределение включено.0,8
UCFVehicleAdapterComponent::CabinLowPassFrequencyЧастота среза фильтра нижних частот для звука внутри салона, в Гц, когда переопределение включено.3000 Гц
UCFVehicleAdapterComponent::EngineSoundProfileЗвук двигателя. Пусто берёт значение по умолчанию из Crushform Engine.пусто
UCFVehicleAdapterComponent::EngineSoundOffsetГде звучит двигатель относительно корня владельца, в сантиметрах.ноль
UCFVehicleAdapterComponent::RamAllowanceMpsПри Owning Client: насколько быстрее недавнего пика скорости, в м/с, может быть сообщённый удар.15 м/с

Адаптер Chaos, который берёт колёса из компонента движения, описан на странице Адаптер Chaos.

  1. Нажмите Play, врежьте машину в стену и откройте консоль.
  2. Выполните Crushform.Stats. Команда выводит по строке на каждое тело, которое плагин вмял. В строке вашей машины после аварии счётчик hits больше 0.
  3. Выполните stat CrushformVehicle. Время Vehicle adapter появляется, пока машина едет.

Консольные команды есть во всех сборках, кроме Shipping, и в редакторе.

Стекло не трескается, и компонента CF_Glass нет

Заголовок раздела «Стекло не трескается, и компонента CF_Glass нет»

Причина. Glass требует Dirt and Dents. Адаптер создаёт компонент стекла, только если включены оба переключателя.

Решение. Включите Dirt and Dents, затем перекомпилируйте и запустите игру снова.

Ничего не вмято, и OnDamageChanged не срабатывает

Заголовок раздела «Ничего не вмято, и OnDamageChanged не срабатывает»

Причина. Dirt and Dents выключен. Без него адаптер не создаёт компонент CF_Deform, поэтому повреждение всегда равно нулю, и событие никогда не срабатывает.

Решение. Включите Dirt and Dents. Проверьте и Deform Profile: пусто означает профиль проекта по умолчанию.

Причина. Authority стоит на Server, который отклоняет каждый отчёт о ударе от клиента.

Решение. Поставьте Authority на Owning Client для машины, которой управляет игрок. Оставьте Server для машины, которую сервер симулирует один.

Колесо пропускается, и в логе написано, что у него нет радиуса или не назван компонент

Заголовок раздела «Колесо пропускается, и в логе написано, что у него нет радиуса или не назван компонент»

Причина. Radius колеса равен 0, а у меша нет границ, по которым его можно было бы взять, или в записи Wheel не указан компонент.

Решение. Задайте Radius в сантиметрах и выберите компонент колеса в Wheel.

Изменение смещения звука двигателя или порогов удара в запущенной игре ничего не меняет

Заголовок раздела «Изменение смещения звука двигателя или порогов удара в запущенной игре ничего не меняет»

Причина. Адаптер копирует эти значения в свои компоненты при их создании. Изменение у запущенной машины до них не доходит.

Решение. Задайте значение до появления машины или в значениях по умолчанию Blueprint, затем создайте новую машину.