행동트리 task를 c++코드로 작성하고 있었다. 보스의 돌진을 구현해야하는데
보스를 pawn클래스로 만들어서 launch character는 사용을 못해서 그냥
setactorlocation을 이용해서 구현을 했다.
보스의 캡슐 컴퍼넌트에 콜리젼채널을 설정해서 보스 캡슐컴퍼넌트의
onComponentHit에 adddynamic으로 플레이어에게 데미지 주는 함수를 달아주려했다.
여기서 문제가 발생했는데 데미지주는 함수가 호출이 아예 안 되었다.
setactorlocation은 물리적으로 움직이는게 아니라 순간이동하는 개념이기 때문에
충돌처리를 함수 내부에 인자로 구현해뒀다.
인자로 sweep여부를 true를 해주고 FHitResult를 받아와서 처리하니 잘 되었다.
FHitResult HitResult;
boss->SetActorLocation(NewLocation , true , &HitResult);
if ( HitResult.IsValidBlockingHit() )
{
OnHitPlayer
( HitResult.Component.Get()
, HitResult.GetActor()
, HitResult.GetComponent()
, HitResult.ImpactNormal
, HitResult
);
}