Unreal Engine

입력 장치를 구분하기 게임을 할 때 입력 장치를 키보드와 마우스를 사용하거나 게임패드를 사용하면 입력 장치에 따라 UI가 바뀌는 것을 볼 수 있습니다. 또는 입력 장치에 따라 캐릭터의 이동방식이 변하기도 합니다. 원신의 경우 키보드를 입력 장치로 하여 이동 시 기본적으로 달리기 상태로 이동하지만 별도의 입력으로 걷기 상태로 이동합니다. 게임패드를 입력 장치로 하여 이동 시 조이스틱의 기울기가 전체의 1/3 이상일 경우 달리기 상태로 이동하고 미만일 경우 걷기 상태로 이동합니다. 이처럼 사용자의 입력 장치를 구분하여 여러 방식으로 활용할 수 있습니다. 그러면 사용자의 입력 장치를 구분할 수 있는 방법을 언리얼 엔진 5의 EnhancedInput System을 사용해서 알아보겠습니다. 게임패드의 입력을 구분..
EnhancedInputSystem 언리얼 엔진 4 은 기본 입력 동작 및 축 설정을 프로젝트 세팅에서 설정하여 사용했습니다. 언리얼 엔진 5부터는 지금까지 사용했던 축 및 액션 매핑은 폐기 되고 대신 향상된 입력 액션 및 입력 매핑 컨텍스트(EnhancedInputSystem)를 사용하라고 권고하고 있습니다. 폐기되었다고 축 및 액션 매핑을 사용 수 없다는 것은 아닙니다. 언리얼 엔진 4처럼 사용할 수는 있지만 이후 버전이 올라가면서 버그라던가 업데이트를 지원하지 않는다는 뜻이겠지요. 프로젝트에 따라서 축 및 액션 매핑을 사용하거나, 언리얼 엔진 5에서 사용하는 EnhancedInputSystem을 사용하시면 됩니다. EnhancedInputSystem을 사용할 때 입력 키에 해당하는 입력 값을 받고자..
애니메이션 스테이트 이벤트 애니메이션 스테이트 섹션의 이벤트들에 경고 문구가 표시되어있다. 애님 노드 함수 버전을 사용하라는데 스테이트 노드를 더블클릭한 후 출력 노드를 확인해보면 State 섹션에서 함수를 바인딩해서 사용하면 된다.
루트 모션 애니메이션을 사용할 때 캐릭터의 스켈레톤에 Root Bone이 필요합니다. 위와 같이 Root Bone이 없는 스켈레톤을 Blender에서 Root Bone을 추가해보겠습니다. Blender의 왼쪽 상단에서 Object Mode를 Edit Mode로 변경해줍니다. 그리고 키보드의 'Shift' 키를 누른 상태에서 'A' 키를 누릅니다. 그러면 Bone이 하나 생깁니다. 우측의 새로 만든 Bone을 클릭하고 키보드의 'Shift' 키를 누른 상태에서 Hips도 클릭한 다음 마우스를 모델이 있는 화면으로 가져와 키보드의 'Ctrl' 키를 누른 상태에서 'P' 키를 누릅니다. Keep Offset을 클릭합니다. Bone이 Hips의 부모가 됩니다. Bone의 이름을 변경하고 Export합니다.
.pmx 파일은 언리얼 엔진에 임포트를 할 수 없습니다. 그래서 Blender나 3DMax 같은 프로그램을 통해 .fbx 파일로 변환하여 임포트 해줘야 합니다. 그 중 Blender를 사용하여 .pmx 파일을 .fbx 파일로 변환하여 언리얼 엔진에 임포트하는 방법을 사용하겠습니다. 시작하기에 앞서 다음과 같은 준비물이 필요합니다. .fbx 파일로 변환할 .pmx 파일 Blender 3.6.x Cats Blender Plugin Development .pmx 파일은 각자 개인이 원하시는 캐릭터의 .pmx 파일을 사용하시면 됩니다. Bldner의 경우 3.5나 3.6버전을 사용하시면 됩니다. 필자의 경우, 3.6버전의 최신버전인 3.6.8버전을 사용했습니다. 다운로드는 아래의 공식홈페이지에서 다운 받으시면 ..
다음과 같이 선언하면 C++에서 인터페이스 변수를 사용할 수 있다. private: /** Damageable 인터페이스를 가지고 있는 액터입니다. */ UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "BaseHealthBar|DamageableActor", meta = (AllowPrivateAccess = "true")) TScriptInterface DamageableActor; 인터페이스의 함수를 사용하는 방법은 다음과 같다. float UPRBaseHealthBarWidget::GetHealthBarPercent() const { if(HealthBar && IsImplementsDamageableInterface(DamageableAct..
위젯 애니메이션은 시작과 끝에 Delegate를 사용하여 특정 함수를 실행할 수 있습니다. 예를 들어 위와 같이 대미지를 표시하는 폰트는 대미지를 출력한 후 위젯 애니메이션으로 FadeOut 되면서 완전히 사라질 때 위젯 애니메이션의 끝에 선언한 Delegate를 실행하여 폰트를 제거합니다. 이처럼 위젯 애니메이션의 시작과 끝에 Delegate를 사용하여 활용한 코드는 다음과 같습니다. // SampleWidget.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "P..
https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/Components/UActorComponent/OnRegister/ UActorComponent::OnRegister Called when a component is registered, after Scene is set, but before CreateRenderState_Concurrent or OnCreatePhysicsState are called. docs.unrealengine.com 플레이어 캐릭터에 추가한 ActorComponent에서 플레이어 캐릭터에 접근할 때마다 Cast으로 형을 변환하는 것이 귀찮아질 때 다음과 같이 ActorComponent를 상속 받는 클래스를 생성하여 O..
한돌이
'Unreal Engine' 카테고리의 글 목록