7. 버그) Tick, TickComponent 순서 문제

6. 콜드 런치 애니메이션을 구현하고난 후, 위와 같은 순서로 진행되어서 물리 시뮬레이션 위치가 제대로 되지 않는 문제가 있었다.
아래는 TickRate가 낮을 때, 즉 DeltaSecond가 커졌을 때 훨 씬 더 큰 갭을 만들어 내는 것을 보여준다.

Tick 구조 개선
Unreal Engine
/** Determines which ticking group a tick function belongs to. */
UENUM(BlueprintType)
enum ETickingGroup : int
{
/** Any item that needs to be executed before physics simulation starts. */
TG_PrePhysics UMETA(DisplayName="Pre Physics"),
/** Special tick group that starts physics simulation. */
TG_StartPhysics UMETA(Hidden, DisplayName="Start Physics"),
/** Any item that can be run in parallel with our physics simulation work. */
TG_DuringPhysics UMETA(DisplayName="During Physics"),
/** Special tick group that ends physics simulation. */
TG_EndPhysics UMETA(Hidden, DisplayName="End Physics"),
/** Any item that needs rigid body and cloth simulation to be complete before being executed. */
TG_PostPhysics UMETA(DisplayName="Post Physics"),
/** Any item that needs the update work to be done before being ticked. */
TG_PostUpdateWork UMETA(DisplayName="Post Update Work"),
/** Catchall for anything demoted to the end. */
TG_LastDemotable UMETA(Hidden, DisplayName = "Last Demotable"),
/** Special tick group that is not actually a tick group. After every tick group this is repeatedly re-run until there are no more newly spawned items to run. */
TG_NewlySpawned UMETA(Hidden, DisplayName="Newly Spawned"),
TG_MAX,
};
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/actor-ticking-in-unreal-engine#틱종속성
AddTickPrerequisiteActor()
AddTickPrerequisiteComponent()
Unity
이벤트 함수 실행 순서(Execution Order of Event Functions) - Unity 매뉴얼
- FixedUpdate: FixedUpdate 는 종종 Update 보다 더 자주 호출됩니다. 프레임 속도가 낮은 경우 프레임당 여러 번 호출될 수 있으며 프레임 속도가 높은 경우 프레임 사이에 호출되지 않을 수 있습니다. 모든 물리 계산 및 업데이트는 FixedUpdate 후 즉시 발생합니다. FixedUpdate 의 움직임 계산을 적용할 때 Time.deltaTime 만큼 값을 곱할 필요가 없습니다. FixedUpdate 가 프레임 속도와 관계없이 신뢰할 수있는 타이머에서 호출되기 때문입니다.
- Update: Update 는 프레임당 한 번 호출됩니다. 프레임 업데이트를 위한 주요 작업 함수입니다.
- LateUpdate: LateUpdate 는 Update 가 끝난 후 프레임당 한 번 호출됩니다. Update 에서 수행된 모든 계산은 LateUpdate 가 시작할 때 완료됩니다. LateUpdate 는 일반적으로 다음의 3인칭 카메라에 사용합니다. 캐릭터를 움직이고 Update 로 방향을 바꾸게 하는 경우 LateUpdate 에서 모든 카메라 움직임과 로테이션 계산을 수행할 수 있습니다. 이렇게 하면 카메라가 포지션을 추적하기 전에 캐릭터가 완전히 움직였는지 확인할 수 있습니다.
스크립트 실행 순서 설정(Script Execution Order Settings) - Unity 매뉴얼
적용
enum class ETickGroup : unsigned int
{
ETG_PrePhysics = 0,
ETG_PostPhysics,
ETG_None
};
enum class ETickPriority : unsigned int
{
ETP_High = 0,
ETP_Middle,
ETP_Low,
ETP_None
};

10. 미사일 폭파시 데미지
여기서 사용한 HitManager(후 MissileGridManager)에서 Tick으로 제어해도 됬을 것 같음.