언리얼 엔진 5/공부 16

[언리얼 엔진 5] 애니메이션 사운드

언리얼 엔진에서 사용되는 전통적인 사운드 시스템은 사운드 큐이다.https://docs.unrealengine.com/4.26/ko/WorkingWithMedia/Audio/SoundCues/Editor/ 사운드큐 에디터사운드큐 노드 기반 오디오 애셋을 셋업하고 편집하는 데 사용되는 툴 사용 안내서입니다.docs.unrealengine.com   새로운 사운드 큐를 생성하고, 사운드 큐 에디터 내부에 Wave Player 노드를 만들어 Output에 연결해 줌으로써 간단한 사운드 재생 에셋을 만들 수 있다.  Output 노드의 디테일 패널에서 사운드의 볼륨, 피치 조절 등의 후처리를 할 수도 있다.   언리얼 엔진 5로 넘어오면서 새로 생긴 시스템이 메타 사운드이다.https://docs.unreale..

[언리얼 엔진 5] Blend Space 방향 전환이 부자연스러울 경우 확인할 것

보통 이동 방향에 따른 게걸음 애니메이션 블렌딩을 위해 Blend Space를 많이 사용하는데, 일반적으로 Calculate Direction 함수의 리턴 값을 -180 ~ 180 범위로 하여 방향을 담당하는 수평 축으로 사용한다. 이때 만약 캐릭터의 후방/좌측, 후방/우측 간의 애니메이션 전환이 부자연스럽다면, 디테일 패널의 Horizontal Axis 메뉴 아래에 있는 Wrap Input 항목을 체크해보자. 이 값이 true이어야지만 Direction 값이 사이클처럼 돌아가서 Direction의 한쪽 끝에서 한쪽 끝으로의 애니메이션 전환이 자연스럽게 된다. 만약 false라면, 값을 min / max 사이로 clamp하기 때문에 방향의 후방 좌측, 후방 우측 간의 전환 시 Direction이 -180..

[언리얼 엔진 5] Collision에 대하여

언리얼 엔진 5에서 인스턴스의 Detail 패널의 Collision 항목을 보면 다음과 같다. 기본적으로 Query and Physics로 되어있는 경우가 많을 것이다. Query Only Raycast, Sweep(hit), Overlap을 탐지하여 그에 따른 작업을 처리한다. 이 3개가 곧 Query의 의미인 '질의'라고 할 수 있다. IK(지형에 따른 자세 변화) 등 레이캐스팅을 통한 처리가 가능하다. 물리적으로 힘을 가할 수는 없다. (물리학 계산을 하지 않음) 물리 시뮬레이션은 필요없지만, 충돌 등의 감지는 하고싶을 때 쓸 수 있다. Physics Only 물리학 계산을 수행하게 할 수 있음 쿼리가 비활성화되어있다면 캐릭터의 밀침 등에 의한 상호작용은 없다. 탐지(쿼리)가 필요없는 물리 시뮬레이..

[언리얼 엔진 5] Input Action에 대하여

Value Type Axis: 상대적으로 성능이 나쁘다. 프레임단위로 입력받고 계산되어야 하는 정교한 입력(이동, 카메라 회전 등), 혹은 받아들인 값을 수치로서 사용해야 하는 Input에 사용하기 적합하다. Axis1D, 2D, 3D는 각각 float, 2차원 벡터, 3차원 벡터이다. Bool: 상대적으로 성능이 좋다. 공격, 점프 처럼 일회성 입력인 경우에는 bool을 사용하는 것이 더 효과적이다. Triggers 입력받은 Input에 대한 일종의 필터링 Trigger가 할당되어있는 Input은 Trigger 조건을 통과한 뒤에야 Input으로 인정되어 처리된다. 일정 시간 이상 꾹 누르고 있기(Hold), 입력을 종료하기(Release), 아주 짧게 입력하기(Pulse) 등이 있다. Modifier..

[언리얼 엔진 5] 헤더를 include할 때 주의할 점 (+ 포워드 선언)

우선, #include "__.h"를 사용하는 것은 해당 헤더의 소스 코드 전체를 include문의 위치에 그대로 복사 & 붙여넣기하는 것과 같다.컴파일 시에 소스 코드의 include문이 해당 헤더 파일 전체로 교체되는 것이다.    주의: 헤더에 헤더를 include하는 것은 가급적 피하는 것이 좋다.  헤더 파일의 비대화헤더파일은 기본적으로 다른 여러 소스코드에서 include되어서 사용된다.만약 자기 자신이 아닌 다른 헤더를 include하는 헤더가 있다면, 그 헤더를 include하는 것은 그 헤더 뿐만이 아니라 그 헤더가 포함하고 있는 다른 헤더까지 include하는 것과 같다.예를 들어, Item.h에서 Character 타입 변수를 사용하기 위해 #include "Character.h"를 ..

[언리얼 엔진 5] CDO(Class Default Object)에 대하여

언리얼 엔진 5는 Actor를 상속받은 C++클래스를 사용할 때, 해당 클래스를 기반으로 CDO를 생성한다. CDO란? 언리얼 엔진의 Reflection 시스템에 포함된 오브젝트의 Master Copy 각 클래스마다 만들어지는 일종의 마스터 오브젝트 엔진이 시작될 때, 소스코드를 컴파일할 때 만들어진다. C++ 코드로부터 파생된 블루프린트 클래스들의 프로퍼티(변수)의 기본 값을 가지고 있다. 기본 값들은 클래스의 생성자를 통해 설정된다. 이에 따른 클래스의 생성자를 사용함에 있어 주의할 점 클래스의 생성자에 해당하는 코드는 인게임이 아닌 에디터에 먼저 영향을 끼친다. 게임 시작시에 어떠한 로직을 실행시키고 싶다면, 생성자가 아닌 BeginPlay 함수에서 해야한다. 만약 게임플레이 관련 코드가 클래스의 ..