Unreal Engine

총 쏘기

Awesome Red Tomato 2023. 7. 6. 17:44

좌클릭을 누르면 총을 쏘는 함수 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