언리얼 기초 공부(5) 25.01.08

HyeonjungYun·2025년 1월 8일

언리얼 기초

목록 보기
5/23

캐릭터 사운드 설정

이번엔 캐릭터가 달리면서 바닥을 내딪을 때마다 소리가 재생되도록 만들어보자.


콘텐츠 브라우저에서 Sound폴더를 만들어준다.


발걸음 사운드 파일을 구한 다음에 Sound폴더에 넣어준다.
(그냥 파일 탐색기에서 드래그 드랍하면 된다.)


그 다음에 사운드 폴더에서 우클릭 -> 오디오 -> 사운드 큐를 선택한다.
이름을 SC_Walk라고 짓는다.


사운드큐를 더블클릭하여 들어가보면 이런 창이 뜬다. 중간에 있는 Output노드에 우리가 출력할 최종 사운드를 연결시켜줘야한다.


아까 가져온 사운드 파일 2개를 랜덤으로 재생시킬 것이기 때문에 이벤트 그래프에서 우클릭 후 '랜덤'이라고 검색 후 랜덤 노드를 생성하여 Output노드와 연결한다.


그 다음 사운드 파일 2개를 드래그 드랍하면 노드로 변형되는데 이를 랜덤 노드에 차례대로 연결해준다.

저장 후 큐 재생 버튼을 눌러보자


다음과 같이 사운드가 재생되는 것을 볼 수 있다.


저번에 애니메이션 폴더에 저장해두었던 Run모션으로 들어가면 중간 화면 아래의 그래프가 있는 것을 볼 수 있다.
그래프 좌측에 노티파이라는 항목이 보인다. 이는 특정 시점에 함수(상황)을 제시해주는 역할을 한다.
그래프를 우클릭하여 노티파이를 추가할 수 있지만, 여기서 새 노티파이를 생성하면 다른 모션에 이 노티파이를 적용하고 싶을 때 Run모션에까지 접근해야한다는 문제점이 발생한다.

이 때문에 스켈레톤 에셋에 노티파이를 적용시키고자 한다.


모션창의 우측 상단에 보면 해골 모양의 스켈레톤 버튼을 클릭한다.


클릭하고 나면 이런 창이 뜬다.


우측 하단에 애니메이션 노티파이 창이 있고 여기에 노티파이를 추가하여 이름을 Walk로 지어준다.


다시 Run모션 파일로 돌아와서 그래프에 노티파이 트랙을 하나 추가해준다.


그 다음 캐릭터의 발이 바닥에 닿을 때마다 Walk노티파이를 추가시켜줄 것이다.


내가 가진 Run모션에는 이미 바닥에 닿을 때마다 노티파이로 표시가 되어 있어서 이 표시를 따라 Walk 노티파이를 추가시켜주었다.

이제 저장해주자.


이제 Walk이벤트가 발생했을 때마다 발걸음 소리가 재생되게 만들어야 한다. ABP_Main의 이벤트 그래프로 이동하여 우클릭 후 Event To AnimNotify_Walk를 검색하여 노드를 생성한다. 여기서 Walk는 아까 만든 노티파이를 뜻한다.


이벤트 그래프에서 우클릭하여 Play Sound를 검색하면 Play Sound 2D와 Play Sound at Location이 나오는데 우린 일단 Play Sound 2D를 선택하여 노드를 생성한다.

Play Sound 2D : 사운드를 스피커로 바로 재생하는 기능을 가지고 있다.
Play Sound at Location : 3D 월드 상의 위치에서 사운드를 재생하고, 사운드가 나오는 위치와 멀어지면 사운드의 크기가 작아지고 가까워지면 커진다.


그 다음 그림과 같이 노드를 연결시켜주고 Sound에서 방금 만든 사운드큐 SC_Walk를 선택해주자.
이제 컴파일/저장 후 실행시켜보자.


걸을 때마다 걷는 소리가 나는 것을 볼 수 있다.

캐릭터 래그돌 설정

이제 캐릭터의 래그돌을 설정해보자. 래그돌이란 단어는 쉽게 말해 봉제인형을 뜻한다. 캐릭터가 쓰러질 때 봉제인형처럼 부드럽게 쓰러지는 모습을 만들어보자.


콘텐츠 브라우저에서 우클릭 -> 피직스 -> 피직스 에셋을 클릭하여 피직스 에셋을 만들어주자.

피직스 항목이 살짝 아래에 있으므로 안 보인다면 드래그를 해보자.


피직스 에셋을 고르면 스켈레탈 메시를 고르라고 하는데 우리가 만든 캐릭터의 스켈레탈 메시를 클릭하자.


스켈레탈 메시를 선택하고 나면 새 피직스 에셋이라는 이름의 창이 새로 뜬다.
프리미타입을 Sphere로 설정하고 최소 본 크기를 0으로 설정한 다음 에셋 생성 버튼을 눌러주자

최소 본 크기 : 충돌체를 붙일 때 어느 정도 크기 이상의 뼈에만 붙일 건지 결정한다.
프리미티브 타입 : 충돌체 외형의 종류를 결정한다.
컨스트레인트 : 일종의 제약을 두는 것을 의미한다. 충돌체가 어느 각도부터 어느 각도까지 꺽인다 등의 규칙을 결정한다.

그러면 피직스 에셋이 만들어진다. 이름을 지어주고 더블클릭하여 들어가보자.


들어가보면 화면에 충돌체가 보이지 않는데, 이것은 충돌체가 단순하게 너무 작기 때문이다. 충돌체가 보이도록 설정부터 해주자.


화면 상단에 캐릭터를 눌러주고 바디 -> 와이어 프레임을 선택해준다.

그 다음 왼쪽 스켈레톤 트리 창에서 전부 선택해주고

우측 디테일 창의 프리미티브 항목에서 반경을 5000으로 설정해준다.


그럼 충돌체가 눈으로 보일만큼 커진 것을 볼 수 있다.

피직스 에셋을 저장해주고 캐릭터 컴포넌트의 이벤트 그래프로 이동하자.


이제 설정한 피직스 에셋을 캐릭터 블루프린트 클래스에 들어가 설정해주어야 한다.
내 블루프린트 창에서 "쓰러짐"이라는 이름의 함수를 하나 추가해주자.

쓰러졌을 때 제일 먼저 해야하는 것은 메시의 물리를 구현해주는 것이다.


컴포넌트 창에서 메시를 드래그 드랍하여 생긴 메시의 노드를 만들자. 메시의 노드의 우변에서 끌어와 Set Simulate Physics를 검색하여 노드를 생성해주자. 그리고 Simulate항목은 체크해주어야 한다.

이 다음 콜리전 프로필을 설정해주어야 하는데, 콜리전 프로필이란 충돌했을 대 어떠한 규칙을 따를지 결정하는 것이다. 예를 들면 통과한다, 벽이면 부딪힌다 등의 규칙을 정하는 것이다.


메시 컴포넌트를 새로 드래그 드랍하여 Set Collision Profile Name을 검색해 노드를 생성한다. 이 노드를 통해 특정한 프로필 네임을 통해 미리 지정된 프로필을 불러올 수 있다.

우린 Ragdoll이란 프로필을 쓸것이기 때문에 In Collision Profile Name에 Ragdoll이라고 입력해주자.


노드들을 위와 같이 배치해주고 컴파일/저장하고 다시 캐릭터 블루프린트의 이벤트 그래프로 이동해준다.


현재는 캐릭터 컴포넌트의 빙의로 Begin Play노드가 연결되어 있지만 래그돌이 설정된 것을 바로 보고 싶기 때문에 쓰러짐 함수의 노드를 생성하고 Begin Play와 연결해주고 빙의 노드와 연결을 끊어준다.

그 다음 컴파일/저장을 하고 실행시켜보자.

위와 같이 래그돌이 제대로 설정된 모습을 볼 수 있다.

profile
게임 프로그래머 공부

0개의 댓글