<aside> 📌
Компонент многоразового использования, предназначенный для обработки логики стрельбы снарядами или выполнения рейкаст-атак из персонажа или актора. Он инкапсулирует основные механики, стрельба разными режимами, управления боеприпасами, спавн снарядов и многое другое, что способствует повторному использованию кода и его удобству в поддержке.
</aside>
<aside>
<aside>
<aside>
1. Инкапсуляция основной логики стрельбы: Компонент несет полную ответственность за управление всеми аспектами стрельбы, создание снарядов или лучей, управление боеприпасами, и активацию эффектов.
2. Повторное использование и модульность: ShootingComponent разработан для добавления к любому Актеру, которому необходимо стрелять. Он не жестко связан с конкретным типом персонажа.
3. Коммуникация на основе событий: Компонент использует делегаты для передачи событий стрельбы другим частям системы. Например, OnFire сигнализирует анимационной системе о необходимости воспроизвести анимацию стрельбы, или OnAmmoChanged уведомляет элемент UI обновить отображение боеприпасов.
</aside>
| Название | Тип | Доступность | Описание |
|---|---|---|---|
| AvailableFireModes | TArray<EFireMode> | private |
Определяет доступные режимы стрельбы. |
| FireMode | EFireMode | private |
Текущий режим стрельбы оружия. Определяет, как происходит выстрел (одиночный, автоматический, очередь и т.д.). |
| FireType | EFireType | private |
Определяет основной тип стрельбы данного оружия. Рейкаст или проджектайлами. |
| FireRate | float | private |
Скорострельность оружия в выстрелах в секунду. |
| BulletsPerShot | int32 | private |
Количество снарядов-пуль, выпускаемых за один выстрел. |
| HitscanRange | float | private |
Максимальная дистанция, на которую действует выстрел при использовании техники "хитскан". |
| HitscanTraceType | TEnumAsByte<ETraceTypeQuery> | private |
Тип трейса хитскана. |
| MuzzleSocketName | FName | private |
Имя сокета на сетке актера-владельца, откуда будет исходить выстрел. |
| DamageConfig | FDamageConfig | private |
Конфигурация, определяющая параметры урона, наносимого этим объектом. |
| ProjectileActorClass | TSubclassOf<AActor> | private |
Класс актера, который будет использоваться как снаряд. |
| Ammo | FAmmoInfo | private |
Информация о боеприпасах оружия, включая текущее количество в магазине и общий запас. |
| SpreadConfig | FSpreadConfig | private |
Информация о разбросе (спреде) пуль. Определяет, насколько пули отклоняются от центральной линии при стрельбе. |
| FireSound | USoundBase* | private |
Звуковой эффект (SFX), воспроизводимый при выстреле. |
| MuzzleFlash | UNiagaraSystem* | private |
Визуальный эффект (VFX), воспроизводимый в точке выстрела (дуле оружия). |
| bDebug | bool | public |
Флаг, включающий/выключающий режим отладки. |
| Название | Сигнатура | Доступность | Описание |
|---|---|---|---|
| StartFire | void() | public |
Пробует запустить процесс стрельбы. |
| FinishFire | void() | public |
Прекращает процесс стрельбы из оружия. |
| CanFire | bool() | public |
Проверяет, готово ли оружие к выполнению операции стрельбы в данный момент. |
| ConsumeAmmo | void(int32 Amount) | public |
Уменьшает боеприпасы. |
| SetAmmo | void(FAmmoInfo NewAmmo) | public |
Устанавливает новую информацию о боеприпасах для оружия. |
| SetFireType | void(EFireType NewFireType) | public |
Устанавливает тип стрельбы для оружия. |
| SetFireMode | bool(EFireMode NewFireMode, bool bForce) | public |
Устанавливает новый режим стрельбы для оружия. |
| SetAvailableFireModes | void(const TArray<EFireMode>& NewAvailableFireModes) | public |
Устанавливает новый список достпных режимов стрельбы для оружия. |
| SetFireRate | void(float NewFireRate) | public |
Устанавливает новую скорость стрельбы для оружия. |
| SetSpreadConfig | void(FSpreadConfig NewSpreadConfig) | public |
Устанавливает новую базовую информацию о разбросе для оружия. |
| SetSpreadScale | void(float NewScale) | public |
Устанавливает новое значение для масштаба разброса. |
| SetDamageConfig | void(FDamageConfig NewDamageConfig) | public |
Устанавливает конфикг урона, наносимый оружием. |
| SetHitscanRange | void(float NewRange) | public |
Устанавливает дальность действия трассировки луча (hitscan). |
| SetBulletPerShot | void(int32 NewBulletPerShot) | public |
Устанавливает количество "пуль" (трассировок), выпускаемых за один выстрел. |
| SetHitscanTraceType | void(TEnumAsByte<ETraceTypeQuery> NewHitscanTraceType) | public |
Устанавливает тип трассировки (trace type), который будет использоваться для hitscan-запросов. |
| SetProjectilePoolManager | void(UObjectPoolComponent* NewManager, bool bRefresh) | public |
Устанавливает менеджер пула для пуль (снарядов). |
| SetFireSound | void(USoundBase* NewFireSound) | public |
Устанавливает звук, который будет воспроизводиться во время выстрела. |
| SetMuzzleFlash | void(UNiagaraSystem* NewMuzzleFlash) | public |
Устанавливает визуальный эффект вспышки у дула оружия. |
| SetMesh | void(USkeletalMeshComponent* NewMesh) | public |
Устанавливает или обновляет ссылку на компонент меша, используемый для стрельбы. |
| GetDamageConfig | FDamageConfig() | public |
Возвращает конфиг урона. |
| GetFireMode | EFireMode() | public |
Возвращает текущий режим стрельбы оружия. |
| GetAvailableFireModes | TArray<EFireMode>() | public |
Возвращает доступные типы стрельбы. |
| GetFireRate | float() | public |
Возвращает скорострельность оружия. |
| GetAmmo | FAmmoInfo() | public |
Возвращает текущую информацию о боеприпасах оружия. |
| HasAmmoInMagazine | bool() | public |
Проверяет, есть ли патроны в текущем магазине. |
| IsFullAmmoInMagazine | bool() | public |
Проверяет, полностью ли заполнен магазин. |
| IsFiring | bool() | public |
Проверяет, стреляет ли оружие в данный момент. |
| GetSpreadConfig | FSpreadConfig() | public |
Возвращает базовую информацию о разбросе оружия. |
| GetSpreadScale | float() | public |
Возвращает текущий масштаб разброса. |
| GetLastHitResult | FHitResult() | public |
Возвращает результат последнего совершенного "хитскан" выстрела. |
| GetProjectilePoolManager | UObjectPoolComponent*() | public |
Возвращает текущий менеджер пула для пуль (снарядов). |
| GetMesh | USkeletalMeshComponent*() | public |
Получает ссылку на компонент меша, используемый для стрельбы. |
| RefreshMagazine | void() | public |
Обновляет состояние магазина, перенося патроны из общего запаса. |
| NextFireMode | void() | public |
Переключает на следующий FireMode. |
| CalculateSpread | FVector() | public |
Рассчитывает вектор направления выстрела с учетом разброса. |
| CalculateDamageByDistance | float(float InDamage, float InDistance) | public |
Рассчитывает величину урона в зависимости от пройденного расстояния. |
| GetFireLocation | FVector() | public |
Возвращает позицию, откуда будет произведен выстрел. |
| GetFireDirection | FVector() | public |
Возвращает базовое направление, в котором будет произведен выстрел. |
| GetMuzzleSocketLocation | FVector() | public |
Возвращает мировую позицию сокета "Muzzle" (дула) на сетке оружия. |
| Название | Сигнатура | Описание |
|---|---|---|
| OnStartFire | void() | Делегат, который вызывается, когда стрельба фактически начинается. |
| OnFinishFire | void() | Делегат, который вызывается, когда стрельба завершается. |
| OnFire | void() | Делегат, который вызывается каждый раз, когда происходит фактический выстрел. |
| OnPostSpawnLineTrace | void(const FHitResult& Hit) | Делегат, который вызывается после выполнения трассировки луча (line trace) в процессе стрельбы. |
| OnTargetHit | void(AActor* HitActor, float DamageAmount, const FHitResult& HitInfo, const FGameplayTag SurfaceTag) | Делегат, который вызывается при попадание в цель. |
| OnAmmoUpdated | void(const FAmmoInfo& NewAmmo) | Делегат, который вызывается при обновление патрон. |
| OnFireModeChanged | void(EFireMode NewFireMode) | Делегат, который вызывается при смене режима огня. |