체력
개요
HealthSystem
은 SystemSignalsOnly
으로 오직 엔티티에 피해를 입히고 치유하고 킬하는 방법을 제공하는 시스템입니다. 진입 지점은 ISignalModifyHealth
이며 HealthData
구조체가 필요합니다.
기본적으로 HealthSystem
은 속성이나 아군 사격 등 외부 조건을 고려하지 않으며, 추후 사용을 위해 수정된 HealthData
를 반환하지도 않습니다. 이러한 제한은 히트를 계산할 수 있는 맞춤형 환경을 제공하는 HitSystem
에 의해 어느 정도 완화됩니다.
ISignalModifyHealthNoReport
는 HealthSystem
이 HealthData
를 수정할 수 있도록 제공하는 방법입니다. 이 경우 HealthData
가 참조로 전달되므로 첫 번째 히트 통과 후 추가 처리가 가능합니다. HealthData
를 참조로 전달하면 실행 제어가 호출 메소드로 리턴될 때 구조체 내부의 속성이 계산됩니다. 그러나 처리 후 HealthSystem.ReportHealthModified()
을 최종 HealthData
와 함께 수동으로 호출해야 한다는 의미입니다.
Health
컴포넌트는 IsInvulnerable
과 IsRevivable
을 지원하며, 이 컴포넌트들은 언제든지 설정할 수 있습니다.
HealthData
HealthData
에는 다음의 속성들이 포함되어 있습니다:
Type
( 필수 ): 영향을 받는 대상을 정의하는EHealthType
- 체력 / 실드 / 체력과 실드Action
( 필수 ): 어떤 행동을 할지 정의하는EHealthAction
- 추가 / 제거 / 모두 제거 / 킬 / 재생Result
( 자동 ):EHealthActionResult
- 없음 / 적용됨 / 무시됨Target
( 필수 ): 체력이 변경된 엔티티Source
( 필수 ): 수정 요청을 생성한 엔티티 (예, 발사체)Instigator
( 필수 ): 체력 변화를 발생시킨 엔티티 (예, 에이전트 - 무기의 소유자 / 변화를 유발 하는 발사체)DesiredAmount
( 필수 ): 원하는 값AppliedAmount
( 자동 ): 적용된 값, 내부 컴포넌트 상태에 기반한 실제 변화IgnoreMax
:true
로 설정하면,체력
/방패
속성들은 최대 제한을 넘을 수 있음HasDied
( 자동 ): 엔티티가 죽었는지를 나타냄HasRevived
( 자동 ): 엔티티가 부활했는지를 나타냄WasDamaged
( 자동 ): 엔티티가 피해를 입었는지를 나타냄WasHealed
( 자동 ): 엔티티가 치료되었는지를 나타냄
노트: 필수 로 표기된 모든 필드들은 HealthData
를 ISignalHit
으로 전달하기 전에 값이 할당되어야 합니다. 자동 으로 표시된 모든 필드는 ISignalModifyHealth
안에서 자동으로 설정됩니다.
ReportHealthModified
HealthSystem.ReportHealthModified()
는 Health
컴포넌트의 변경 사항을 리포트할 때 사용됩니다. 이 메소드는 ISignalModifyHealthNoReport
후에 호출할 수 있습니다.
주의: ISignalModifyHealth
는 직접 호출하지 않아야 합니다. 대신 HitSystem
을 사용하세요.
HealthSystem
은 변경 사항을 리포트하기 위해 다음과 같은 신호 이벤트 쌍을 지원합니다:
ISignalOnHeal
및Heal
ISignalOnDamage
및Damage
ISignalOnDeath
및Death
(동기화된 이벤트)ISignalOnRevive
및Revive
(동기화된 이벤트)