공부/Unreal

24.07.01

월러비 2024. 7. 3. 14:37

사운드

  • 2D 사운드 : 거리에 따라 감쇄(낮아지거나 높아지거나)가 없다.
    • 배경음악
  • 3D 사운드 : 효과음

사운드 테스트

  • 2D 사운드 생성
    • 액터 블루프린트 생성 - 박스 콜라이더 컴포넌트 생성 - 텍스트 렌더 컴포넌트 생성 - 디테일 - 렌더링 - 게임에서 숨김 체크 해제 - 이벤트 그래프 - ‘ActorBeginOverlap’ 이벤트 노드 검색 - ‘오디오’ 변수 추가하고 ‘audio’를 검색해서 ‘오디오 컴포넌트'를 타입으로 지정한다. - ‘Spawn Sound 2D’ 검색 후 넣을 사운드를 Sound에서 선택한다.
    • Spawn Sound 2D : 2D 사운드 생성 함수
      • Volume Multiplier : 소리 크기
      • Pitch Multiplier : 사운드 속도
      • Start Time : 몇초 뒤에 플레이하라는 옵션이다.
      • Concurrency Settings ; 사운드 동시 플레이에 관한 옵션으로 쓰레드와 관련되어있다. (나중에 배운다.)
    • Spawn Sound Location ‘ Attach : 3D 사운드 생성 함수 (별도의 처리를 하지 않는다면 2D 사운드로 사용된다.)
  • 2D 사운드 중복 해결
    • 사운드 스폰 노드 확인 - ‘오디오’ 변수를 Set으로 배치 후 연결 - BeginOverlap 첫 시작에 ‘오디오’ 변수를 ‘검증된 Get’으로 연결한다. - ‘유효’ 핀을 끌고 ‘Set Paused’ 검색 후 반환 값을 타깃에 연결한다. - 나머지는 ‘유효하지 않음’ 핀에 연결한다. - ‘ActorEndLoverlap’ 이벤트 검색 - ‘오디오’ 변수를 ‘검증된 Get’으로 연결 - ‘Set Paused’를 유효 핀에 연결하고 Pause를 True로 체크한다.
    • 정리
      • 오디오 변수가 유요하지 않을때 (값이 없을 때) : 사운드를 소환하고 ‘오디오’ 변수에 저장
      • 오디오 변수가 유효할때 (값이 있을 때) : 사운드를 ‘정지’ 함수를 이용하여 정지를 취소시킨다.
      • 겹침이 끝나면 : 오디오를 ‘정지’ 함수로 정지시킨다.
  • 3D 사운드 생성 (배경음) - 따로 설정하지 않았기 때문에 2D 사운드처럼 동작한다.
    • 2D 사운드 블루프린트 복붙하고 이벤트 그래프 전부 지우기 - ActorBeginOverlap 이벤트 노드를 끌고 ‘Spawn Sound at Location’ 검색 - ‘Get Actor Location’을 검색해서 Location에 연결
    • Spawn Sound at Location : 설정된 위치를 중심으로 사운드를 플레이 시키는 함수다.
      • Rotation : 깔대기에 말하는것처럼 퍼져나가는 소리의 회전을 설정하는 옵션이다.
      • Auto Destroy : 체크하면 사운드가 끝날 때 삭제된다. (체크 안하면 임의로 지워줘야한다.)
  • 3D 사운드 설정 - 사운드 어테뉴에이션 파일 생성
    • 콘텐츠 브라우저 - 사운드 - 사운드 어테뉴에이션 클릭
    • Sound Concurrency : 사운드 동시 실행
    • 사운드 어테뉴에이션 : 사운드 감쇄 설정 파일이다.
      • 사운드의 볼륨이 거리에 따라 어떻게 들릴지 설정한다.
    • 사운드 큐 : 사운드를 프로그래밍 할 수 있는 파일이다.
      • 나중에 다시 한다.
  • 3D 사운드 설정 - 감쇄 설정
    • 어테뉴에이션 파일 클릭 - ‘볼륨 어테뉴에이션 활성화’ 체크 - ‘어테뉴에이션 함수’ Linear 선택 - ‘어테뉴에이션 셰이프’ Sphere 선택 - ;내부 반경’과 ‘감쇠 거리’ 설정
    • 어테뉴에이션(볼륨) - 볼륨 어테뉴에이션 활성화 체크 : 체크가 안되어있으면 기능을 사용할 수 없다.
    • 어테뉴에이션 함수
      • Linear : 0 ~ 1 까지 순차적으로 감쇄가 일어난다. (지금은 이거 사용)
      • Loganthmic : 급격하게 휘어지는 그래프처럼 감쇄가 일어난다.
    • 어테뉴에이션 셰이프 : 소리가 감쇄될 모양
      • Box : 박스 형태의 공간을 지나면 소리가 끊긴다.
      • Sphere : 구 형태의 감쇄 공간
    • 내부 반경 : 소리가 줄기 시작하는 반경이다.
    • 감쇄 거리 : 소리가 꺼지는 거리
      • 즉, ‘내부 반경’의 거리부터 소리가 서서히 줄어들다가 ‘감쇄 거리’를 넘어가면 소리가 들리지 않게된다.
    • 어테뉴에이션 (오클루전) : 벽이나 장애물 등으로 소리가 줄어드는 효과를 주는 옵션이다.
  • 3D 사운드 넣기
    • 사운드 블루프린트 - 사운드 로케이션 스폰 노드 확인 - Attenuation Settings에 ‘어테뉴에이션 파일’ 넣기
  • 사운드 반경 확인
    • 사운드 블루프린트 - ‘틱 이벤트’ 검색 - ‘Draw Debug Sphere’ 검색 - ‘Get Actor Location’ 검색 후 연결 - ‘내부 반경’과 형태 정밀도와 색깔 설정 - 노드들을 복사해서 연결한 다음 ‘감쇠 거리’ 설정

이미지 포멧

  • png, jpg(데이터 손실이 있어서 안쓴다), webp(웹 전용이라서 안쓴다), gif(애니메이션이라서 안쓴다.), (tga, bmp ⇒ 옛날거라서 요즘 거의 안쓴다.)
  • wav(대부분 이걸 쓴다.), (ogg, mp3 ⇒ 손실이 있어서 안쓴다.) ⇒ 사운드
  • mp4, AVI(대부분 이걸 쓴다.), Mov ⇒ 영상 (AVI 빼고 나머지들은 손실 압축 파일이다.)

적 타격음

  • 적 히트시 소리 넣기
    • 적 블루프린트 - AnyDamaged 노드 마지막 확인 - ‘Spawn Sound at Location’ 검색 후 Sound에 적 타격음 넣기 - Location 핀을 끌고 ‘Get Actor Location’ 검색

 

히트스탑

  • 배치된 모든 액터 가져와서 출력
    • 적 블루프린트 - AnyDamaged 노드 마지막 확인 - ‘Get All Actors Of Class’ 검색 후 ‘액터’로 클래스를 지정한다. - 배열 반환 핀 끌고 ‘For Each Loop’ 검색 - ‘Pawn에 형변환’ 검색 - 반복문의 Array Element를 끌어서 ‘Get Component by Class’ 검색 후 Component Class를 ‘메시 컴포넌트’로 지정한다.(가져온 액터에서 무버블, 즉 메쉬를 가지고 있는지 확인) - ‘Is Valid’ 검색 - Is Valid 핀을 끌고 Branch 검색 - 메시 컴포넌트를 가저오는 노드의 핀을 끌고 ‘Get Mobility’ 검색 (메쉬 안의 모빌리티에서 무버블을 확인하기 위해서 사용한다.) - 모빌리티 핀을 끌고 ‘==’를 검색 후 ‘Equal(Enum)’을 클릭하고 Movable로 지정한다 (모빌리티가 Movable과 같다면 True로 반환한다.) - 해당 노드를 배치했던 Branch의 Condition으로 넣는다. - Print String으로 출력한다.
    • Get All Actors Of Class : 화면에 배치된 선택된 클래스를 모두 가져오는 함수다.
      • 액터로 지정하는 이유 : 히트스탑 걸리면 화면에 움직이는 장애물도 잠시 정지시킬 것이기 때문이다.
    • For Each Loop With Break : break 문이 있는 For Each 문 함수다.
    • pawn으로 형변환이 실패한다면 그냥 ‘액터’이다.
    • 모빌리티 - 무버블이 그려지는 모양 : 메쉬
    • EComponentMobility 리터럴 열거형 : 열거형을 직접적으로 열거형으로 쓰는 함수다.
    • 정리
      • 액터를 가지고 반복을 돌린다 - 메시 컴포넌트를 가저온다. - 가저온 액터의 모빌리티에서 무버블인지 확인한다. - 맞으면 다음 노드를 실행한다.
  • 움직이는 장애물 만들기
    • 액터 블루프린트 생성 - 스테틱 메시 컴포넌트 추가 - 스테틱 메시 지정 - 메테리얼 할당 - 이벤트 그래프 - ‘틱 이벤트’ 검색 - ‘Get Actor Location’을 검색 - ‘Sin’을 검색하여 ‘Sin(Radians)’를 클릭 - ‘Get Total Secons’를 검색하고 Sin 노드에 연결 - get location 핀을 끌고 ‘+’ 검색 - + 노드의 벡터 핀 우클릭 후 ‘구조체 핀 분할’ 클릭 - Sin 핀을 끌고 * 검색 후 이동 거리 값 지정(10을 곱하면 -10 ~ +10 까지의 값이 나온다.) 후 좌우 이동을 할 것이니 Y 핀에 연결 - 이후 실행 노드 핀과 벡터 핀을 끌고 ‘Set Actor Location’에 연결한다.
    • Get Time Secons’ : 게임이 시작되고 현재까지의 ‘초’
  • 히트스탑 적용
    • 적 블루프린트 - AnyDamaged 노드 마지막 확인 - 딜레이 걸 액터들을 모을 ‘딜레이 액터들’ 액터 배열 변수 생성 - 생성한 배열 변수를 Get으로 배치하고 끌어서 ‘Add’를 검색하고 ‘추가’를 클릭한다. - 배열에 추가할 값은 반복문에서 나올 액터들이니 연결한다. - 이것을 또 끌어서 ‘Set Custom Time Delation’ 검색 후 실행할 함수의 이름과 지연할 시간 값을 넣는다. -
    • Set Custom Time Delation : 액터들의 플레이 시간을 늦추는 함수다.
  • 히트스탑 되돌리기
    • 적 블루프린트 - ‘딜레이 시간 되돌리기’ 커스텀 이벤트 생성 - 반복 끝남 핀을 끌고 ‘Set Timer by Function Name’ 검색 - ‘딜레이 시간 되돌리기’ 커스텀 이벤트의 핀과 ‘딜레이 액터들’ 배열 변수의 핀을 끌고 ‘For Each Loop’를 연결한다. - ‘Set Custom Delay’ 검색 - 반복 끝남 핀을 끌고 ‘Clear’ 검색 후 ‘딜레이 액터들’ 핀 끌고 연결 (히트 끝나면 배열을 새로 초기화해줘야한다.)
    • Set Timer by Function Name : 설정한 이름의 함수 노드를 설정한 시간 뒤에 실행시키는 함수다.

이펙트

  • 원하는 에셋 가져오기
    • 원하는 에셋 프로젝트로 가저온다 - 그 중에서도 프로젝트에 넣을 에셋 선택 - 디테일 - 파티클 - 템플릿에서 ‘폴더에 돋보기 모양이 붙은 아이콘’ 클릭 (해당 에셋이 있는 위치가 콘텐츠 브라우저에 표시된다.) - 선택된 에셋 우클릭 후 ‘에셋 액션’ - ‘이주’ 클릭 (해당 에셋을 이루는 파일들이 다 같이 표시된다.) - 에셋 넣을 프로젝트의 Content 폴더 선택 (그냥 따로 뺄거면 다른 폴더에 해도 된다.)

'공부 > Unreal' 카테고리의 다른 글

24.07.03  (2) 2024.07.05
24.07.02  (1) 2024.07.03
24.06.28  (0) 2024.07.02
24.06.27  (0) 2024.06.28
24.06.26  (0) 2024.06.28