추구하는 게임의 컨탠츠에 따라서 데미지가 누적된 부분이 떨어져 나가거나
기계 등이 분해되어 버리는 기능이 필요할 때가 있습니다
처음부터 여러 메시를 조합해서 만든 유닛의 경우 조건에 따라
해당 메시를 detech 해버리면 편하게 구현이 가능하지만 하나의 스켈레탈메시의
분리가 필요하여 연결된 본 분리 기능을 찾아보았습니다
Break Constraint

엔진에서 제공되는 연결해체 노드입니다
USkeletalMeshComponent::BreakConstraint(FVector Impulse, FVector HitLocation, FName InBoneName)
USkeletalMeshComponent에 구현되어있습니다
함수 내부를 살펴보니 본 이름을 메시에서 찾아 해당 본과 자식본들을
SimulationPhysics true로 하여 레그돌화 시키고
bodyinstance의 피직스솔버에서 언레지스트 시킴으로 메시로부터 연결을 끊는 기능입니다
GetMesh()->SetCollisionProfileName(FName("Ragdoll"));
GetMesh()->BreakConstraint(FVector::ZeroVector, FVector::ZeroVector, FName("분리할 본 이름"));
분리된 메시에서 시뮬레이션피직스가 true로 바뀌기 때문에 이전에 사용하던 콜리전 프리셋에서 오류를 뱉어낼 수 있습니다
때문에 분리 전 콜리전 프리셋을 레그돌이나 피직스 등으로 변경해주고 본 분리를 진행해주어야 합니다
ZeroVector로 넣은 인자는 노드와 마찬가지로 Impluse (특정 방향으로 충격 밀어냄 효과) 와 충격 지점입니다
이제 본 분리 기능을 몬스터 등의 DeadState 시작 혹은 데미지 누적 등의 조건에서
이펙트와 Impulse등을 조절해서 호출해주면 메시 분리 기능 구현이 완료됩니다.

폭발형 적의 데미지 누적시 폭발 및 몸체 분리가 구현된 모습입니다