Make Unreal REAL.
article thumbnail
Unreal Engine 5 C++ Multiplayer Shooter

 

발소리와 점프 사운드를 가져오기 위해 Shooter Game 학습 킷 프로젝트를 생성한다.

 


발소리 사운드 큐를 Migrate 하려는데 불필요한 것들까지 포함되어 있는 것을 볼 수 있다.

 

SC_Footsteps 사운드 클래스를 열어보면, 여기서 다른 불필요한 것들을 포함하고 있는 것을 확인할 수 있다.

Blaster 게임에서는 필요하지 않으므로 Class를 None으로 지정해준다.

 

 

Class를 None으로 지정해도 사운드 큐가 정상적으로 동작한다.

 

 

불필요한 것들이 제거된 것을 확인할 수 있고, Blaster 프로젝트의 Content 폴더에 Migrate 해준다.

 

 

같은 방식으로 점프 시작과 착지 사운드 큐도 Migrate 해준다.

 


Footsteps_att라는 새로운 소리 감쇠 설정을 생성해준다.

  • Inner Radius
    감쇠 효과가 시작되는 거리
  • Falloff Distance
    감쇠 임계점이며 이 거리를 넘어가면 소리가 들리지 않는다.
    중심으로부터가 아닌 Inner Radius로부터의 거리이다.

 


발자국, 점프, 착지 사운드 큐에서 Attenuation을 설정해준다.

 

 

현재 애니메이션 블루프린트에는 많은 상태가 존재하므로, 발자국 소리를 추가하는 작업은 꽤 번거롭다.

  • 사용된 애니메이션과 블렌드 스페이스에 포함된 애니메이션까지 전부 일일이 Sync Marker와 Play Sound 노티파이를 추가해줘야 하기 때문이다.
  • Idle 애니메이션에는 하지 않아도 된다.

 

서 있을 때만 발자국 소리를 재생할 것이므로, 서 있을 때 무기를 장착한 경우와 장착하지 않은 경우만 고려한다.

 

 

서 있을 때 무기를 장착한 경우에는, 아래에서 선택된 상태에 포함된 모든 애니메이션과 블렌드 스페이스의 애니메이션에 일일이 작업을 해줘야 한다.

 

 

서 있을 때 무기를 장착하지 않은 경우에도 마찬가지다.

 

 

애님 그래프에서 해당하는 애니메이션과 블렌드 스페이스에 포함된 애니메이션에서 이 작업을 반복해준다.

 

왼쪽 발과 오른쪽 발이 땅에 닿는 시점을 찾아, 해당 프레임에 Play Sound 노티파이와 Sync Marker를 배치해준다.

 

 

Play Sound 노티파이를 배치할 때 콘텐츠 브라우저에서 사운드 큐 에셋을 선택한 상태로 추가하면, 자동으로 해당 사운드 큐로 지정된다.

 

 

Sync Marker는 애니메이션 블렌딩 시 하나의 애니메이션으로 취급하기 위해 서로 동기화하는 데 사용된다.

  • LeftFoot, RightFoot을 번갈아 배치해주고, 왼쪽/오른쪽이 맞지 않아도 상관없다.

 

 

같은 에셋에서 가져온 애니메이션들을 사용했으므로, 발이 땅에 닿는 주기는 거의 일정하다.

 

따라서 일일이 수작업 할 필요 없이, Ctrl 키를 눌러 모두 선택하고 복사한 후 발이 처음 땅에 닿는 시점을 찾아 그 곳에 붙여넣기 해줘도 된다.

 

 

점프와 착지는 블렌딩을 하지 않으므로, Sync Marker를 추가하지 않고 Play Sound 노티파이만 추가해도 된다.

 

 

꽤 번거로운 작업을 거쳐, 발자국 소리와 점프 사운드를 추가했다.

  • 많은 상태와 블렌드 스페이스 때문에 애니메이션의 개수가 워낙 많았기 때문이다.

 

Sync Marker를 추가했으므로, 블렌딩 시에도 하나의 애니메이션인 것처럼 재생된다.

 

 

만약 멀티 플레이어 FPS에서 앉아있을 때, 자신에게만 소리가 들리고 원격의 다른 사람에게는 들리지 않게 하고 싶다면 이것도 번거롭지만 크게 어렵지는 않다.

 

애니메이션 블루프린트에서 사용할 수 있도록, 애님 인스턴스에 로컬에서 조종 중인지 여부를 저장하는 bLocallyControlled라는 변수를 선언한다.

 

 

NativeUpdateAnimation() 함수에서 APawn::IsLocallyControlled() 함수의 값을 저장시켜준다.

 

 

그리고 애님 그래프에서 bLocallyControlled 값과 Blend Poses by bool 노드를 이용해, 로컬에서만 발자국 소리가 적용된 애니메이션을 재생시켜주면 된다.

 

 

조종 중인 로컬에서만 발자국 소리가 들리고, 다른 사람의 원격에서는 들리지 않는다.

 

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그