본문 바로가기

언리얼엔진163

언리얼엔진5 c++ UMETA(DisplayName = " ") ▣ UMETA(DisplayName = "")는 Unreal Engine의 UENUM에서 각 열거형 값(enum value)에 특정한 디스플레이 이름(Display Name)을 지정할 때 사용됩니다.UMETA는 Unreal의 메타데이터 표기로, DisplayName은 엔진 에디터에 표시될 이름을 지정할 수 있는 메타 데이터 필드입니다.이를 사용하면 에디터에서 더 직관적이고 사용자 친화적인 이름으로 열거형 값을 표시할 수 있습니다. ▣ UMETA가 유용한 이유 UMETA(DisplayName = "Work")와 같은 메타데이터를 활용하면 다음과 같은 장점이 있습니다:에디터에서 더 직관적인 이름 제공: DisplayName을 통해 C++ 변수명 대신 더 직관적이고 보기 좋은 이름을 제공할 수 있습니다. 다국.. 2024. 10. 26.
언리얼엔진5 c++ 카메라 상하 이동(총기 반동) ▣ AddPitchInput(float Val) 설명: 카메라의 피치(Pitch)를 조정하는 함수로, 카메라를 상하로 움직입니다. 입력 값(Val)이 양수이면 카메라가 아래로 향하고, 음수이면 위로 향하게 됩니다. 1인칭 게임에서는 위아래 시점 조절, 3인칭 게임에서는 카메라 높이 조절로 사용됩니다. API :https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/GameFramework/APlayerController/AddPitchInput/  ▣ AddYawInput(float Val) 설명: 카메라의 야우(Yaw)를 조정하는 함수로, 카메라를 좌우로 회전시킵니다. 입력 값(Val)이 양수이면 카메라가 오른쪽으로 회전하고, 음수이면 왼쪽으로 회전합니.. 2024. 10. 1.
언리얼엔진5 c++ Widget Image Chanage ▣  헤더 파일 추가 (#include "Components/Image.h") UImage를 사용하기 위해 Components/Image.h 헤더를 추가합니다. 이 헤더에는 이미지 위젯과 관련된 모든 함수 및 클래스가 정의되어 있습니다. ▣  조건 체크 및 초기화 if (Animinstance->IsGetWeapon && Animinstance->WeaponType != 3): 플레이어가 무기를 장착하고 있고, 무기의 종류가 특정 타입(3번 타입)이 아닌 경우 조준 상태로 변경하는 조건입니다. if (HUDClass == nullptr): HUDClass가 아직 로드되지 않은 상태라면, LoadClass를 사용해 블루프린트 위젯 클래스를 로드합니다. TEXT("/Game/UMG/WB_HUD.WB_HUD_.. 2024. 9. 27.
언리얼엔진5 c++ GetLocation() 함수들 차이 ▣ GetComponentLocation() 설명: SceneComponent의 월드 좌표를 반환합니다. 즉, 현재 게임 세계에서 해당 컴포넌트가 위치한 절대적인 좌표를 의미합니다.언제 사용해야 하는가? 다른 객체와의 거리나 방향을 구할 때. 물리적 계산이나 충돌 판정 등에서 정확한 월드 위치가 필요할 때. ▣ GetActorLocation() 설명: Actor의 월드 좌표를 반환합니다. Actor의 루트 컴포넌트(Root Component)의 위치를 기반으로, 월드에서의 절대 좌표를 제공합니다.언제 사용해야 하는가? 특정 Actor의 전체 위치를 얻고 싶을 때. 다른 Actor와의 상대적 위치나 방향을 계산할 때. ▣ GetRelativeLocation() 설명: SceneComponent의 상대 좌표.. 2024. 9. 16.
언리얼엔진5 Time Remaining ▣ Time Remaining Time Remaining 노드는 현재 활성화된 애니메이션 시퀀스(애니메이션 클립)의 남은 시간을 반환합니다. 이 값은 초 단위로 측정되며, 애니메이션의 끝까지 남은 시간을 나타냅니다. ▣ 사용 예시: 예를 들어, 캐릭터가 공격 애니메이션을 재생하고 있다고 가정하면, Time Remaining 노드를 사용하여 애니메이션이 끝나기 직전(예: 0.2초 남았을 때) 다른 상태로 전환하거나 새로운 애니메이션을 시작할 수 있습니다. ▣  노드 사용 방법: Time Remaining 노드는 상태 머신의 상태나 트랜지션 내에서 사용할 수 있습니다. 애니메이션 시퀀스를 지정한 후, 해당 애니메이션의 남은 시간을 얻을 수 있습니다. 참고 사항: 애니메이션이 종료되면 Time Remainin.. 2024. 8. 14.
언리얼엔진5 Add State Alias, Priority Order ▣ Add State Alias는 특정 상태(State)에 별칭(Alias)을 부여하여, 해당 상태를 다른 이름으로 참조할 수 있도록 합니다. 복잡한 애니메이션 그래프에서 동일한 상태를 여러 곳에서 사용해야 하는 경우, 별칭을 사용하면 상태를 더 쉽게 관리하고 이해할 수 있습니다. ▣ 만약 애니메이션 블루프린트에서 "Run" 상태가 있다면, 이 상태를 "SprintStart"라는 별칭으로 추가하여 사용할 수 있습니다. 이렇게 하면, 동일한 상태를 다양한 상황에서 재사용할 수 있으며, 블루프린트가 복잡해지더라도 직관적으로 상태를 파악할 수 있습니다. ▣ 사용 방법: 상태를 추가하고자 하는 노드를 우클릭합니다. Add State Alias 옵션을 선택합니다. 별칭을 지정한 후, 이 별칭을 사용하여 상태를 참.. 2024. 8. 14.
언리얼엔진5 Rotation 설정 ▣ 플레이한 상태에서 ~ 콘솔 커맨드창에서DisplayAll PlayerController ControlRotation : 해당 속성값이 마우스 입력에 따라서 어떻게 회전하는지 그 값이 나옵니다.  ▣ Use Controller Rotation Pitch, Use Controller Rotation Yaw, Use Controller Rotation Roll는 Unreal Engine에서 캐릭터의 회전에 관련된 설정으로, 각각 캐릭터가 입력 장치(예: 마우스, 컨트롤러 등)의 회전 입력을 따라 움직이도록 제어하는 옵션들입니다. 이 설정들은 특히 캐릭터가 움직일 때 카메라나 플레이어의 입력에 따라 자동으로 회전하도록 만들 때 유용합니다. ▣ Use Controller Rotation Pitch 역할: 이 .. 2024. 8. 9.
언리얼엔진5 c++ 게임입력모드 설정 ▣ FInputModeGameOnly와 SetInputMode 함수는 Unreal Engine 5에서 게임 입력 모드를 설정하는 데 사용됩니다.이 코드의 목적은 플레이어가 게임 내에서만 입력을 받을 수 있도록 설정하는 것입니다.이를 통해 마우스와 키보드 입력이 게임 내 액션에만 반영되고, 다른 UI 요소나 게임 외부에는 영향을 미치지 않도록 할 수 있습니다. ▣  FInputModeGameOnly 클래스의 인스턴스를 생성합니다. 이 클래스는 게임 전용 입력 모드를 정의하는 역할을 합니다.▣ SetInputMode(GameOnlyInputMode);SetInputMode 함수는 입력 모드를 설정하는 함수입니다. 여기서는 GameOnlyInputMode 인스턴스를 입력으로 제공하여 게임 전용 입력 모드를 활.. 2024. 8. 7.
언리얼엔진5 c++ 모듈의 퍼블릭 포함 경로 ▣ PublicIncludePaths는 Unreal Engine의 모듈 빌드 시스템에서 모듈의 퍼블릭 헤더 파일들이 위치한 디렉토리 경로를 설정하는 리스트입니다. 퍼블릭 포함 경로에 추가된 디렉토리는 다른 모듈에서 이 모듈을 포함할 때 참조될 수 있습니다.  ▣ AddRange는 리스트에 여러 경로를 한꺼번에 추가할 수 있는 메서드입니다. new string[] { "ProjectName" }는 새로운 문자열 배열을 생성하여 " ProjectName " 경로를 리스트에 추가합니다. 이 경로는 모듈의 퍼블릭 헤더 파일들이 위치한 디렉토리를 가리킵니다. 즉, 이 코드는 " ProjectName " 디렉토리를 현재 모듈의 퍼블릭 포함 경로에 추가하여, 이 모듈을 사용하는 다른 모듈들이 이 디렉터리에 있는 헤더.. 2024. 8. 7.
언리얼엔진5 c++ OnOverlapBegin WidgetComponent 추가 https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/UMG/Components/UWidgetComponent/GetWidget   ▣ c++코드에서 충돌 시 OtherActor가 유효한지 여부를 확인해야 합니다. 그러지 않으면 crash가 나게 됩니다.  ▣ FindComponentByClass는 컴포넌트클래스를 찾습니다. 반환 후 꼭 찾은 여부 유효한지에 대한 조건문을 만들어줘서 충돌을 방지합니다. 2024. 7. 26.
언리얼엔진5 c++ SphereComponent https://dev.epicgames.com/documentation/ko-kr/unreal-engine/setting-up-collisions-with-static-meshes-in-unreal-engine?application_version=5.3   ▣ 헤더파일에서 SphereComponent 클래스 및 충돌에 대한 함수를 추가합니다.   ▣ cpp파일에서 SphereComponent 헤더를 추가하고 SphereComponent 생성 및 부모 설정 반지름, 위치설정하는 코드를 추가합니다. BeginPlay() 함수에서 충돌 이벤트 바인딩하는 코드 두 개를 추가합니다. 그리고 Begin(), End() 함수에 각각 코드를 추가합니다.   ▣ 컴파일 저장 후 플레이를 해서 확인하면 충돌에 따라 글자가.. 2024. 7. 26.
언리얼엔진5 c++ TMap https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/TMap/ TMapTMap, 맵은 크게 키 유형과 값 유형, 두 가지로 정의되며, 맵에 하나의 짝으로 저장됩니다.docs.unrealengine.com  ▣ TMap은 데이터를 키&값짝으로 (TPair) 저장합니다.TMap을 저장 및 불러올 때는 키만 사용합니다.맵의 유형은 2가지로 TMap 과 TMultiMap이있습니다.TMultiMap 은 다수의 동일한 키 저장을 지원합니다.기존에 존재하는 키&값을 추가할 때 TMap은 기존 것을 대체하고, TMultiMap은 새로 추가합니다.▣  TMap은 키와 값이 개별로 구분되어 정의됩.. 2024. 7. 16.
언리얼엔진5 c++ enum ▣ 언리얼 열거형은 enum에 class를 붙여야 컴파일 오류가 나오지 않습니다.  그리고 UENUM() 매크로를 붙여서 블루프린트에서 사용할 수 있게 지정할 수 있습니다.UENUM()에서 uint8만 지원하기 때문에 꼭 붙여야 합니다.UENUMclass 밖에서 enum class로 선언하고 BlueprintType 키워드로 블루프린트에서 사용할 수 있게 지정할 수 있습니다.UMETA(DisplayName = )을 지정해서 에디터에서 해당 enum에 이름을 지정해서 볼 수 있습니다.   ▣ 블루프린트에서 enum값으로 Switch를 활용하여 만들 수 있습니다.  ▣ enum으로 조건문 및 값을 변경할 수 있습니다. 2024. 7. 14.
언리얼엔진5 Copyright(저작권 정보) ▣ Unreal Engine 5에서 C++로 게임의 저작권 정보를 설정하려면, 보통 A*GameModeBase 클래스나 주요 게임 설정 클래스에 저작권 정보를 추가할 수 있습니다.▣  Project Settings : Unreal Engine의 프로젝트 설정에서 저작권 정보를 설정할 수 있습니다. 에디터에서 Edit -> Project Settings로 이동합니다. Description 섹션에서 Copyright Notice에 저작권 정보를 입력합니다. 2024. 7. 13.
언리얼엔진5 AnimNotify ▣ Notify를 추가할 애니메이션에서 트랙에 New Notify를 클릭해서 추가합니다.   ▣ 애니메이션 블루프린트에서 Event Graph에서 생성한 Notify Event 이름을 검색하면 Event노드를 찾을 수 있습니다.그리고 해당 이벤트로 함수를 연결하여 Notify가 있는 애니메이션이 실행될 때 Notify를 통해서 해당 함수가 호출할 수 있습니다.   ▣ 플레이어 블루프린트에 추가한 Event를 Notify Event에서 캐스팅해서 해당 함수를 호출할 수도 있습니다. 2024. 7. 3.
언리얼엔진5 c++ AnimNotifyState ▣ c++ AnimNotifyState를 생성합니다. 그리고 3개의 함수를 선언합니다.  virtual void NotifyBegin(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation, float TotalDuration) override; virtual void NotifyTick(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation, float FrameDeltaTime) override; virtual void NotifyEnd(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation) override; ▣ Not.. 2024. 6. 19.
언리얼엔진5 액터 병합하기 ▣ 병합할 액터를 선택한 다음에 Tools에서 Merge Actors를 클릭합니다.   ▣ 병합 방식을 선택하고 Merge Actors를 클릭합니다.  ▣ 병합 종류병합(Merge)간소화(Simplify)배치(Batch)근사계산(Approximate) https://docs.unrealengine.com/4.27/en-US/Basics/Actors/Merging/ Actor MergingAn overview of the Actor Merge tool that is used to combine multiple Static Meshes into a single mesh inside UE4.docs.unrealengine.com  ▣ 저장 후 해당 액터를 레벨에 가져오면 병합된 걸 확인할 수 있습니다. 2024. 6. 18.
언리얼엔진5 Physics Door ▣ 먼저 Actor를 생성하고 Static Mesh를 추가합니다.   ▣ 해당 Static Mesh에 들어가서 Collstion을 추가합니다.   ▣ Static Mesh에 디테일탭에서 Simulate Physics를 체크합니다.   ▣ Phsics Constraint를 추가합니다. https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Physics/Constraints/ConstraintsReference/ 피직스 컨스트레인트 레퍼런스언리얼 에디터의 피직스 컨스트레인트에서 사용할 수 있는 모든 프로퍼티에 대한 레퍼런스입니다.docs.unrealengine.com  ▣ PhsicsConstraint에 Component Name을 Static Mesh.. 2024. 6. 14.
언리얼엔진5 c++ FOnMontageEnded(Montage종료시 호출 델리게이트) ▣ Montage에 관한 헤더를 추가합니다.  ▣ 몽타주 재생 종료에 대한 델리게이트를 인스턴스 선언하고 몽타주가 끝나면 호출되는 함수를 바인딩합니다. 종료 시 호출할 함수 선언 시 (UAnimMontage* Montage, bool isEnded) 매개변수로 선언해야 합니다. 그리고 몽타주가 끝나면 델리게이트에 연동된 함수를 호출하는 코드까지 작성합니다. 그럼 몽타주 재생 후 종료 시 해당 함수를 호출합니다.   ▣ FOnMontageEnded 코드로 들어가면 이렇게 델리게이트 형식으로 선언되어 있는 걸 확인할 수 있습니다. 2024. 6. 14.
언리얼엔진5 c++ Timeline(Aim Zoom In Out) ▣ CurveFloat를 생성하고 Time 0, Value 0, Time 0.2, Value 1 각각 Time과 Value를 지정합니다.그리고 시간에 따라 Value 값이 변경되고  그 값을 조절해서 사용하게 됩니다.  ▣ 오브젝트를 애니메이팅 하는 방법을 더 잘 제어하고 싶은 경우, 커브 에디터를 사용하여 키프레임을 수정하고 미세조정할 수 있습니다. 커브 에디터의 그래프를 사용하여 새 키프레임을 생성하고, 탄젠트를 편집하고, 다양한 내장 툴을 사용하여 애니메이션 커브를 조정할 수 있습니다. 커브 에디터는 나이아가라, 커브 에셋 및 애니메이션 커브 같은 언리얼 에디터 전반의 다른 툴에서 사용됩니다. 이 가이드에서는 시퀀서 내에서 커브 에디터를 사용하는 방법에 대해 간략하게 살펴보겠지만, 여기서 설명하는 .. 2024. 6. 13.
언리얼엔진5 블루프린트 단축키 ▣ 블루프린트 블록 지정 후  C Key  : 주석 ▣ 변수 클릭 + Alt 누른 상태로 드래그 : 변수 SET노드 생성 ▣ 변수 클릭 + Ctrl 누른 상태로 드래그 : 변수 GET노드 생성 ▣ 정렬할 노드 드래그 후 Q Key : 수평정렬 ▣ 정렬할 노드 드래그 후 Shift + A , Shift+D : 수직정렬 ▣ B Key 누른 상태에서 마우스 왼쪽 클릭 : Branch노드 생성 ▣ S Key 누른 상태에서 마우스 왼쪽 클릭 : Sequence 노드 생성 ▣ F Key 누른 상태에서 마우스 왼쪽 클릭 : For Each Loop 노드 생성 ▣ N Key 누른 상태에서 마우스 왼쪽 클릭 : Do N 노드 생성 2024. 6. 12.