좌클릭을 누르면 총을 쏘는 함수 FireWeapon()을 호출한다. 이 함수에서는 총 소리, 발사 이펙트, 충돌을 처리한다.
총 소리
우선 사운드 큐를 만들어 비슷한 총 소리를 랜덤하게 재생시킨다.
// FireWeapon()
UGameplayStatics::PlaySound2D(this, FireSound);
발사 이펙트
총구에 소켓을 하나 만들어 해당 소켓의 Transform에서 파티클을 터뜨려준다.
// FireWeapon()
const USkeletalMeshSocket* BarrelSocket = GetMesh()->GetSocketByName("BarrelSocket");
if(MuzzleFlash)
{
UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), MuzzleFlash, SocketTransform);
}
충돌처리
충돌에는 싱글과 멀티 채널이 있는데 싱글은 단일 충돌(원샷원킬), 멀티는 다중 충돌(원샷 투킬이상)이 가능하다. 한방이면 충분하므로 싱글 채널을 사용해 충돌처리를 했다.
FHitResult FireHit;
const FVector Start{ SocketTransform.GetLocation() };
const FQuat Rotation{ SocketTransform.GetRotation() };
const FVector RotationAxis{ Rotation.GetAxisX() };
const FVector End{ Start + RotationAxis * 50'000.0f };
GetWorld()->LineTraceSingleByChannel(FireHit, Start, End, ECollisionChannel::ECC_Visibility);
FHitResult: 충돌체 정보를 갖는 구조체
https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/Engine/FHitResult/
FHitResult
Structure containing information about one hit of a trace, such as point of impact and surface normal at that point.
docs.unrealengine.com
Start = 시작점(총구(총 소켓))
End = Start + 총구가 바라보는 방향(Axis X) 50만큼 간 거리
애니메이션
달리기 애니메이션에 상반신에 총 쏘는 애니메이션을 레이어하기 위해 Layered blend per bone 노드를 이용해 spine_01를 중심으로 블렌딩 해준다.
'Unreal Engine' 카테고리의 다른 글
프레넬 효과 (0) | 2023.07.13 |
---|---|
외곽선 하이라이트 (0) | 2023.07.13 |
카메라 회전(+ 캐릭터 이동 수정) (0) | 2023.07.06 |
캐릭터 이동 (0) | 2023.07.06 |
카메라 세팅 (0) | 2023.07.06 |