Расшифровка FHitResult в UE 5
Очередной раз споткнулся об расшифровку FHitResult в UE 5 решил написать небольшую заметку для себя и поделиться с вами.
FHitResult - это структура, которая проскакивает в любом взаимодействии с физикой в UE, будь то касты или попытки пошевелить какого-нибудь хитрого актора (потому что там внутри все равно касты и свипы). В ней все поля интересные, но начнем с простого.
bBlockingHit отвечает за определение - было ли это столкновение(Blocking Hit) или просто пересечение (Overlap).По факту тут возвращаются настройки реакции sweep на встречный объект.
bStartPenetrating отвечает за то, начали ли мы наш sweep из физического объекта.
PhysMaterial, HitObjectHandle, Component, PhysicsObjectOwner, PhysicsObject,BoneName, MyBoneName : в этих полях хранится информация об объектах, с которыми наш sweep столкнулся или пересекся. В основном назначение поля понятно из названия, но есть момент: PhysMaterial по умолчанию не передается , а чтобы его передать надо выставить флаг в FCollisionQueryParams::bReturnPhysicalMaterial (эта структура тоже полна чудес)
TraceStart, TraceEnd отвечают за стартовую и конечную точку нашего sweep.
Distance,Time отвечают за время (параметр от 0 до 1) и расстояние от TraceStart до точки столкновения
И вот мы подходим к интересному:
ImpactPoint точка столкновения, т.е. точка в пространстве, где два коллайдера коснулись.
Location координаты в пространстве, в которых, если поместить форму, с помощью которой мы совершаем sweep, форма коснется коллайдера в точке ImpactPoint
Normal это условная нормаль: направление прямой, соединяющей центр нашей формы, помещенной в Location и точку ImpactPoint
ImpactNormal это реальная нормаль поверхности, о которую стукнулась наша форма.
Вот небольшая схема для визуализации.