본문 바로가기

언리얼엔진5121

언리얼엔진5 c++ TArray 생성, TArray.Add(), TArray.Emplace() 차이 ▣ 함수설명Add()배열 끝에 요소 추가 (복사/이동 생성자 필요)Emplace()배열 끝에 직접 생성자 호출하여 요소 추가Remove()특정 값을 가진 요소 제거RemoveAt(Index)인덱스 위치의 요소 제거Empty()배열을 비움Num()배열의 요소 개수 반환IsEmpty()배열이 비어있는지 확인Contains(Value)특정 값이 포함되어 있는지 확인Find(Value)특정 값의 인덱스 반환 (없으면 INDEX_NONE)Insert(Value, Index)특정 인덱스에 요소 삽입Sort()정렬 수행 (기본 또는 커스텀 비교 함수 사용) ▣ TArray.Add(), TArray.Emplace() 차이배열의 얼로케이터는 배열에 새 엘리먼트가 추가될 때 필요에 따라 메모리를 제공합니다. 기본 얼로케.. 2025. 6. 12.
언리얼엔진5 c++ Material Random Setting ▣ StaticLoadObject()는 에디터 밖 (런타임)에서도 사용 가능한 동적 로더입니다.배열 경로에서 /Script/Engine.Material'... 형식은 에디터 자동 복사로 생긴 경로입니다. StaticLoadObject()에는 '/Game/...' 형식만 있으면 충분합니다. (다만 문제없으면 그대로 사용해도 무방합니다.) 2025. 5. 30.
언리얼엔진5 c++ AddImpulse를 활용한 액터 생성 및 던지기 ▣ 헤더에서 Notify랑 생성할 BP 변수 선언 ▣ 코드설명StaticLoadClass 블루프린트 클래스를 런타임에 로드함 SpawnActor 액터(책)를 월드에 생성 SetSimulatePhysics(true) 물리 적용 가능하게 설정 AddImpulse * Mass 질량에 따른 일정한 속도 변화 보장 Direction + Z 벡터 위로 던지는 포물선 구현 ▣ 생성하고 AddImpulse 할 엑터 설정 ▣ Simulate Physics 활성화 AddImpulse()는 물리 시뮬레이션이 켜져 있어야만 작동합니다.▣ 설정 방법:Simulate Physics 체크 Enable Gravity 기본 켜짐 (원하면 끌 수도 있음) Mass in Kg 기본값 OK (0.1 ~ 1.0 정도 추천)Static.. 2025. 5. 30.
언리얼엔진5 c++ OnOverlapBegin, OnOverlapEnd ▣ AddDynamic() 함수는 언리얼의 멀티캐스트 델리게이트 시스템에서 동작하는 방식으로, 이때 바인딩할 함수는 런타임에 리플렉션(Reflection) 이 가능해야 하기 때문에, UFUNCTION() 매크로가 반드시 붙어 있어야 합니다. ▣ 생성자에서 Collision 지정 ▣ BeginPlay에서 바인딩 ▣ if (OtherActor->IsA(APlayerCharacter::StaticClass())) OtherActor가 APlayerCharacter 타입인지 검사합니다. 즉, 충돌된 액터가 플레이어 자신 또는 다른 플레이어 캐릭터일 경우를 걸러냅니다. IsA()는 언리얼의 RTTI 함수로 OtherActor가 지정된 클래스 타입이거나 그 하위 클래스인지 확인하는 함수입니다. 의도: 플.. 2025. 5. 28.
언리얼엔진5 c++ Attack(Task, Notify제작), 현재 Task확인 ▣ Notify에서 현재 Task를 저장하고 불러오기 위한 함수 선언 정의, Sound, Montage 랜덤으로 재생하기 위한 데이터 선언 및 정의 ▣ AttackTask에서 현재 Task를 전달 및 AttackTrace 정의 , zombie에 있는 소리재생, 애니재생 ▣ AttackNotify에서 zombie에 Take가 AttackTask라면 AttackTrace 호출 애니메이션에 notify추가 2025. 5. 12.
언리얼엔진5 c++ 충돌한 Blueprint 함수 호출방법 ▣ 전체 작동 흐름 PlayerCharacter의 Operate() 실행SphereTrace로 충돌한 액터 중 BP_TutorialEvent를 찾음ATutorialEvent로 캐스팅OperateEvent() 호출OperateEvent() 안에서 OperateEventEvent_BP() 호출블루프린트에서 구현한 이벤트 로직 실행 (예: 문 열기, 트리거 작동) 2025. 4. 29.
언리얼엔진5 BehaviorTree, EQS 응용 ▣ Wait Wait Time설명: 이 노드가 실행되었을 때 얼마나 기다릴지를 초 단위로 설정합니다.예: 3.0으로 설정하면, AI는 이 노드에서 3초 동안 대기합니다. ▣ Random Deviation설명: 설정된 Wait Time에 무작위로 더해질 수 있는 시간의 최대값입니다.예: Wait Time이 3.0이고, Random Deviation이 1.0이면, 실제 대기 시간은 3.0~4.0초 사이가 됩니다. ▣ Task Ignore Restart Self설명: 이 옵션은 Behavior Tree가 자기 자신을 다시 시작할 때 이 Task를 무시할지 여부를 결정합니다.체크 시: 트리가 다시 시작될 때 이 노드는 건너뜁니다.일반적으로 이 옵션은 루프가 있는 Behavior Tree에서 무한 대기를 방지하는.. 2025. 4. 5.
언리얼엔진5 c++ 플레이어 방향으로 수평 회전 ▣ 플레이어의 Pawn을 가져오는 부분 UGameplayStatics::GetPlayerPawn(...)는 현재 월드에 존재하는 0번 인덱스의 플레이어 컨트롤러가 조종하는 Pawn을 반환합니다.0 → 기본 싱글플레이어라면 첫 번째 플레이어결과: PlayerPawn 변수에 플레이어 액터가 저장됩니다. ▣ 서로의 현재 위치를 가져옴 GetActorLocation() → Actor의 현재 월드 좌표를 반환합니다.ZombieLocation: 좀비의 위치PlayerLocation: 플레이어의 위치 ▣ 방향벡터 계산 (수평 2D 기준) Player - Zombie: → 좀비에서 플레이어까지 향하는 방향벡터GetSafeNormal2D():이 벡터를 정규화(Normalize) 하되,Z 축(높이)은 무시하고 XY 평면 .. 2025. 4. 5.
언리얼엔진5 c++ (C++에서는 정의하지 않고, 블루프린트에서 Event 노드로 구현 함수) ▣ BlueprintImplementableEvent이 함수는 블루프린트에서 '이벤트로 구현 가능한 함수'라는 뜻입니다.다시 말해, 이 함수는 C++에서는 정의하지 않고, 블루프린트에서 Event 노드로 구현합니다.Event OnFireStarted_BP 라는 노드가 블루프린트 클래스 내에서 자동으로 생성됩니다. ▣ 전체 예시 흐름 C++에서 Fire() 함수가 실행됨.Fire() 내부에서 OnPistolFireBP() 호출.블루프린트의 Event OnPistolFireBP가 반응.블루프린트에서 원하는 연출(이펙트, 애니메이션 등)을 실행. 2025. 3. 24.
언리얼엔진5 Menu Class Setup ▣ MenuWidget이라는 이름설정 후 MultiplayerSessions Plugin으로 설정하고 클래스를 생성합니다.   ▣ 그럼 이런 문구가 나옵니다. 이 메시지는 Unreal Engine 5에서 새로운 C++ 클래스를 추가했지만, MultiplayerSessions 모듈을 다시 컴파일해야 한다는 것을 의미합니다. 그리고 자동 핫 리로드(hot reload)에 실패했다는 것도 함께 나타납니다. Yes 버튼을 클릭하고 언리얼엔진을 닫은 후에   ▣ Build.cs에서 UMG 모듈을 추가하고 Generate를 하면 해결됩니다.   ▣ 다시 Build.cs에서 Slate와 SlateCore를 추가합니다. Slate와 SlateCore는 Unreal Engine의 UI 시스템인 Slate(슬레이트)를 다.. 2025. 3. 3.
언리얼엔진5 Session Join ▣ 코드 설명 - UWorld* World = GetWorld(); GetWorld() 함수는 현재 캐릭터가 속한 UWorld 객체를 반환합니다. UWorld는 게임의 맵과 관련된 정보를 포함하는 핵심 클래스입니다. World 변수를 통해 현재 실행 중인 게임의 환경을 참조할 수 있습니다. - if (World) World가 nullptr이 아니라면, 즉, 유효한 UWorld 객체라면 다음 동작을 수행합니다. nullptr이면 아무 동작도 하지 않도록 안전하게 처리합니다. - World->ServerTravel(FString("/Game/ThirdPerson/Maps/Lobby.Lobby?listen")); ServerTravel 함수는 서버가 새로운 맵으로 이동하도록 만듭니다. "/Game/ThirdP.. 2025. 2. 18.
언리얼엔진5 c++ int32 타입의 숫자를 FText로 변환 ▣ SetText(FText) : UTextBlock의 텍스트를 설정하는 함수▣ FText::AsNumber(int32 Value) : int32 타입의 숫자를 FText로 변환하는 함수▣ 즉, MedicineMap[EMedicineType::Drink] (현재 음료 개수)를 FText로 변환한 후 DrinkCountTextBlock에 설정합니다. 2025. 1. 31.
언리얼엔진5 c++ 몇 초 뒤 OpenLevel ▣ FTimerHandle DoorTimer FTimerHandle은 Unreal Engine의 타이머를 관리하기 위한 핸들입니다.역할: 타이머를 식별하고, 특정 타이머를 취소하거나 재설정할 때 사용됩니다. 이 코드에서는 DoorTimer라는 이름의 타이머 핸들을 생성했습니다. 예시 사용법: 타이머 취소: GetWorld()->GetTimerManager().ClearTimer(DoorTimer); 타이머 상태 확인: GetWorld()->GetTimerManager().IsTimerActive(DoorTimer);▣  GetWorld()->GetTimerManager().SetTimer SetTimer는 타이머를 설정하여 특정 시간이 지난 후에 함수를 실행하거나 반복 실행하게 만듭니다. ▣ GetWor.. 2025. 1. 24.
언리얼엔진5 Blueprint BGM 재생, 정지 ▣ Audio Component 추가 및 초기화블루프린트에 Audio Component를 추가합니다. 소리를 재생하고 페이드 아웃 타이밍을 설정합니다.Fade Out 함수 노드아래 노드를 연결합니다:Fade Out Duration: 페이드 아웃에 걸릴 시간 (초 단위). 2025. 1. 24.
언리얼엔진5 c++ ActorName Find 문자제거 ▣ 코드 분석 Hit.GetActor()->GetName()충돌된 액터의 이름을 가져옵니다. 이름은 FString 형식으로 반환됩니다. ▣ GetName설명:UObject의 이름을 반환하는 함수입니다.이름은 FString 형식으로 반환되며, 이는 해당 객체가 엔진 내에서 사용되는 고유 이름입니다.사용 예시:FString Name = Hit.GetActor()->GetName();주요 활용:디버깅 시 객체 이름 확인.이름을 기반으로 객체 필터링 또는 분류. ▣ LeftChop설명:문자열의 끝에서 지정한 길이만큼 제거하여 새로운 문자열을 반환합니다.사용 예시:FString Result = ItemName.LeftChop(3); // 끝에서 3글자 제거주요 활용:특정 패턴의 끝 부분을 제거하여 필요한 부분만 .. 2025. 1. 22.
언리얼엔진5 Blueprint Camera Zoom ▣ Timeline을 활용해서 0.3초에 0->1 값으로 Alpha이 바뀌는데 이걸 활용해서 카메라 줌과 위치를 변경하는 블루프린트 노드 제작했습니다. 2025. 1. 11.
언리얼엔진5 c++ LightingChannels ▣ SetLightingChannels(true, true, false)와 LightingChannels.bChannel 설정은 Unreal Engine5에서 라이트의 영향을 받는 채널을 설정하는 기능으로, 특정 오브젝트가 어떤 채널의 라이트를 수신할지를 제어할 수 있습니다. ▣  SetLightingChannels() 함수는 오브젝트가 어떤 채널의 라이트를 수신할지 한 번에 지정하는 함수입니다. 이 함수는 다음과 같은 파라미터를 가집니다. bChannel0: 기본 채널(채널 0)을 활성화할지 여부를 설정합니다. bChannel1: 채널 1을 활성화할지 여부를 설정합니다. bChannel2: 채널 2를 활성화할지 여부를 설정합니다. ▣ LightingChannels 구조체는 개별 채널의 활성화 여부를 설.. 2024. 11. 1.
언리얼엔진5 c++ Actor 이름 추출 ▣ GetName() 메서드를 사용하여 Hit.GetActor()의 이름을 가져올 때 이름 뒤에 붙는 "_C_1"와 같은 접미사는Unreal Engine에서 블루프린트 클래스나 인스턴스화된 객체를 나타낼 때 종종 추가됩니다.이 접미사는 Unreal의 객체 관리 시스템에서 객체가 어떤 클래스에서 파생되었는지와 고유한 인스턴스임을 식별하기 위해 자동으로 붙는 것입니다. 예를 들어, 블루프린트로 생성된 액터나 객체는 기본적으로 Unreal의 객체 시스템에서 다음과 같은 형식으로 이름이 변경됩니다: Beteta_C_1 Glock_C_1여기서:"_C": 블루프린트 클래스의 객체임을 나타냅니다. "_1": 해당 클래스의 첫 번째 인스턴스를 나타냅니다. 만약 여러 인스턴스가 있다면 뒤에 숫자가 증가합니다.  ▣  C.. 2024. 10. 11.
언리얼엔진5 c++ Widget Image Change, Widget Text Change ▣  헤더 파일 추가 (#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++ PlaySound2D, PlaySoundAtLocation 차이 ▣ UGameplayStatics::PlaySound2D 함수는 2D 사운드를 재생하는 것으로, 공간과 관련된 정보(위치, 거리, 반사 등)를 무시한 채 사운드를 재생합니다. 즉, 이 함수는 게임 내의 모든 위치에서 동일한 볼륨과 음질로 사운드를 들리게 합니다.▣  PlaySoundAtLocation 또는 Audio Component를 사용하여 사운드를 3D 공간에 맞게 처리할 수 있습니다.Unreal Engine에서는 리스너의 위치와 사운드의 위치에 따라 음향효과(반사, 거리 감쇠 등)가 다르게 들리게 할 수 있습니다. ▣ 코드 설명: PlaySoundAtLocation: 이 함수는 사운드를 특정 위치에서 3D 공간에 맞게 재생합니다. 리스너가 사운드로부터 멀어지면 소리가 작아지고, 가까이 있으면 소리.. 2024. 9. 7.
언리얼엔진5 Add State Alias, Priority Order ▣ Add State Alias는 특정 상태(State)에 별칭(Alias)을 부여하여, 해당 상태를 다른 이름으로 참조할 수 있도록 합니다. 복잡한 애니메이션 그래프에서 동일한 상태를 여러 곳에서 사용해야 하는 경우, 별칭을 사용하면 상태를 더 쉽게 관리하고 이해할 수 있습니다. ▣ 만약 애니메이션 블루프린트에서 "Run" 상태가 있다면, 이 상태를 "SprintStart"라는 별칭으로 추가하여 사용할 수 있습니다. 이렇게 하면, 동일한 상태를 다양한 상황에서 재사용할 수 있으며, 블루프린트가 복잡해지더라도 직관적으로 상태를 파악할 수 있습니다. ▣ 사용 방법: 상태를 추가하고자 하는 노드를 우클릭합니다. Add State Alias 옵션을 선택합니다. 별칭을 지정한 후, 이 별칭을 사용하여 상태를 참.. 2024. 8. 14.