KoreanFoodie's Study

[언리얼] 헤드샷 구현하기 (부위별 피격 데미지 설정) 본문

Game Dev/Unreal C++ : Dev Log

[언리얼] 헤드샷 구현하기 (부위별 피격 데미지 설정)

GoldGiver 2022. 6. 22. 13:28

헤드샷 구현하기 (부위별 피격 데미지 설정)

FPS 게임을 하다보면 헤드샷에 추가 데미지 (혹은 즉사) 를 주는 경우가 많은데, 이는 어떻게 구현하면 될까? 

간단한 방식으로는, 일단 총알을 맞은 Enemy 클래스 내 Skeletal Mesh 의 Bone Name 을 참고하는 방법이 있다.

스켈레톤 트리를 보면 일반적으로 다음과 같이 head 가 있는 것을 확인할 수 있다.

이제 데미지를 받는 함수를 다음과 같이 수정하면 된다.

AEnemy* HitEnemy = Cast<AEnemy>(BeamHitResult.Actor.Get());
if (HitEnemy)
{
    if (BeamHitResult.BoneName.ToString() == HitEnemy->GetHeadBone())
    {
        // Head shot
    }
    else
    {
        // Body shot
    }

}

이때, BeamHitResult 는 FHitResult 타입이다. BoneName 멤버를 통해 본 이름을 조회해 원하는 본의 이름(e.g. "Head")과 같으면 헤드샷 처리를 해 주면 된다!

 

Comments