본문 바로가기

[ Unreal5 ]273

언리얼엔진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++ TActorIterator(특정 타입의 액터를 찾기) https://dev.epicgames.com/documentation/en-us/unreal-engine/API?application_version=5.3    ▣ TActorIterator :  TActorIterator는 Unreal Engine에서 특정 타입의 액터를 반복적으로 검색하고 접근하는 데 매우 유용한 도구입니다. 이 반복자는 현재 월드에서 원하는 타입의 모든 액터를 쉽게 찾고 작업을 수행할 수 있도록 도와줍니다. TActorIterator를 사용하면 특정 타입의 액터를 간편하게 검색하고 처리할 수 있습니다. ▣  *It: 반복자가 가리키는 현재 AWeaponManager 인스턴스를 반환합니다. 이를 통해 반복자가 현재 가리키는 액터에 접근할 수 있습니다.  ▣ 월드에 WeaponMana.. 2024. 7. 27.
언리얼엔진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 c++ 한글표시설정 ▣ c++ 코드에서 한글을 디버그 출력하게 되면 이렇게 깨져서 보이게 됩니다.   ▣ 첫 번째 방법으로 인코딩하여 다시 저장하고 인코딩을 유니코드로 다시 저장하면 됩니다.   ▣ 두 번째 방법으로 프로젝트에서 New EditorConfig를 추가하고 해당 프로젝트 파일탐색기로 가서. editorconfig에서 [*] 포함 charset = utf-8로 코드 추가하고 저장합니다.   ▣ 그리고 새로운 c++ 코드를 추가하고 인코딩 저장을 하지 않고 한글로 디버그출력을 하여도 깨지지 않고 한글이 제대로 출력됩니다. 2024. 7. 13.
언리얼엔진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++ Dynamic CrossHair ▣ 먼저 CrossHair Widget을 생성합니다. CrossHair에 모양은 Border로 제작하고 정렬은 가운데로 위치가 크기는 0으로 지정하고 Is Variable를 체크합니다.   ▣ 플레이어 헤더파일에서 CrossHair 퍼지게하는 값을 관리하는 변수를 선언합니다.   ▣ 캐스팅하기전에 HUD를 생성자에서 가져오는 코드를 주석처리하거나 제거합니다. 그래야 플레이어에서 캐스팅한 값을안전하게 가져올 수 있습니다.     ▣ 위젯 블루프린트로 가서 플레이어 CrossHairSpread 변수를 캐스팅하고 Get 한 다음에CrossHairSpread 크로스헤어 퍼지는 값CrossHairLength 크로스헤어 길이 CrossHairThickness 크로스헤어 두께를 관리하는 변수를 선언합니다.그리고 Cr.. 2024. 6. 26.
언리얼엔진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.
언리얼엔진5 c++ Interface https://dev.epicgames.com/documentation/ko-kr/unreal-engine/interfaces-in-unreal-engine?application_version=5.3 https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/GameplayArchitecture/Interfaces/ 인터페이스인터페이스 생성 및 구현 관련 레퍼런스입니다.docs.unrealengine.com     ▣ UINTERFACE 클래스는 실제 인터페이스가 아닙니다. 언리얼 엔진의 리플렉션 시스템에 대한 비저빌리티를 위해서만 존재하는 빈 클래스입니다. 다른 클래스에서 상속되는 실제 인터페이스는 클래스 이름이 동일해야 하지만 첫 'U'가 'I'로 .. 2024. 6. 11.
언리얼엔진5 ProgressBar ▣ Input Action에 Triggers에 Hold를 추가합니다. 그리고 Hold Time Threshold를 조절하여 Hold 시간을 조절합니다. Is One Shot을 체크하면 Hold 시간이 끝나면 한 번만 Shot을 합니다.   ▣ BP_Player로 가셔서 E키를 누르면 Print 하는 노드를 연결합니다. 그럼 E키를 누르고 Hold Time Threshold 타임이 지나면 Print노드가 한번 출력됩니다.    ▣ 위젯을 생성하고 Text와 ProgressBar를 추가하여 배치하고 ProgressBar에 디테일에 Percent를 바인딩합니다. 그리고 해당 코드에서 BP_Player 변수를 Return Value 하는 노드를 완성합니다.  BP_Player에서 Level 변수를 먼저 생성하고.. 2024. 6. 11.