본문 바로가기

언리얼128

언리얼엔진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.
언리얼엔진5 Delegate ▣ 델리게이트란? - 델리게이트는 함수 포인터와 비슷한 개념으로, 특정 함수에 대한 참조를 저장하고 나중에 이를 호출할 수 있는 기능을 제공합니다. - 사용: 특정 이벤트가 발생했을 때, 미리 지정된 함수나 메서드를 호출하는 데 사용됩니다. ▣ 왜 사용하는가?- 이벤트 처리: 특정 조건이 발생했을 때 여러 개의 리스너 함수가 호출되어야 할 때 유용합니다. - 콜백 메커니즘: 비동기 작업이 완료된 후 후속 작업을 수행해야 할 때 사용합니다. - 코드의 결합도 감소: 코드의 모듈성을 높이고, 서로 다른 클래스나 모듈 간의 의존성을 줄일 수 있습니다. - 유연한 설계: 런타임에 어떤 함수가 호출될지 유연하게 결정할 수 있습니다. ▣ Delegate (델리게이트)로 C++ 오브젝트 상의 멤버 함수 호출을 일반적.. 2024. 6. 9.
언리얼엔진5 Option System ▣ 먼저 옵션 위젯 블루프린트를 생성합니다.   ▣ BackgroundBlur를 추가하고 Blur Strength 값을 변경합니다.  ▣  Vertical Box안에 Horizontal Box를 정렬하고 상속하여 추가합니다.   ▣ Horizontal Box 각각에 Text, Button를 조합하여 넣어서 Option 위젯디자인을 완성하고 BackGroundImage도 추가하여 배경도 옵션에 배경도 넣습니다. 그리고 각각 화살표 버튼마다 이름을 지정하고 Is Variable을 활성화합니다.   ▣ WindowsMode Button  클릭 이벤트를 추가하고 WindowsMode라는 변수에 EWindow Mode 형식으로 지정하고 Default Value값도 Windows Fullscreen으로 변경합니다.. 2024. 6. 5.
언리얼엔진5 c++ AIController Character AnimInstance Cast ▣ Character에 대한 참조 정의를 하기 위해서는 GameFramework/Character.h 헤더를 추가합니다.   ▣ 그리고 Pawn -> Character -> Mesh -> AnimInstance를 하나하나 대입하고 캐스팅하여 가져와서 AnimInstace를 접근하여 사용가능합니다. 2024. 6. 4.
언리얼엔진5 Project Packaging ▣ 먼저 프로젝트를 패키징 하기 전에 패키징 세팅을 진행합니다. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/project-section-of-the-unreal-engine-project-settings?application_version=5.3 언리얼 엔진 프로젝트 세팅의 프로젝트 섹션 | 언리얼 엔진 5.4 문서 | Epic Developer Community언리얼 엔진 프로젝트 세팅의 프로젝트 섹션에 대한 레퍼런스입니다.dev.epicgames.com  ▣ Packaging메뉴에서 Build Configuration을 Shipping으로 세팅합니다.  ▣ 빌드 환경설정(Build Configuration) 프로젝트가 패키징 된 빌드 환.. 2024. 5. 30.
언리얼엔진5 Launch URL ▣ cpp에서 #include "Kismet/KismetSystemLibrary.h"를 추가합니다.  ▣ 그리고 UKismetSystemLibrary::LaunchURL("https://makerejoicegames.tistory.com/"); 함수에 URL을 문자열 형식으로 매개변수에 넣고 컴파일 저장 후에 플레이를 하면 해당 함수를 호출하면 URL이 나오게 됩니다.   ▣ 블루프린트에서는 바로 Launch URL 노드를 검색하여 사용하시면 됩니다.  https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Utilities/Platform/LaunchURL/ Launch URLLaunch URLdocs.unrealengine.com 2024. 5. 30.
언리얼엔진5 Stealth Animation System ▣ 먼저 Stealth 공격, 죽음 애니메이션을 Import 합니다.   ▣ 플레이어 블루프린트에서 SkeletalMesh를 추가하고 Animation Mode를 Asset으로 지정한 다음에 기본 애니메이션으로 지정합니다.   ▣ 그리고 위치와 회전값을 변경하고 Hidden in Game을 체크하여 안 보이게 합니다.     ▣ 그리고 키를 누르면 BoxTrance를 쏘고 해당 Actor가 Zombie라면 해당 Actor를 숨기고 플레이어 애니메이션 재생하면서 SkeletalMesh를 다시 보이게 하고 애니메이션을 재생하는 노드를 완성합니다.   ▣ 그리고 해당 좀비 Actor를 배치하고  ▣ 가까이 가서 키를 누르면 애니메이션이 재생되는 걸 확인할 수 있습니다. 2024. 5. 28.
언리얼엔진5 c++ Aim ▣ 먼저 Rotator 값을 저장할 변수를 선언합니다.  ▣ cpp로가서 DeltaRotator함수를 사용하기 위해 헤더를 추가합니다.    ▣ 위에 블루프린트 이미지처럼 c++ cpp에서 Owner에 접근하여 Rotation()을 가져와서 DeltaRotator함수로 계산한 다음 DeltaRotator에 값을 반환하고 AimRotator에 회전값 기준에 맞게 값을 대입합니다.  ▣ 애니메이션 블루프린트에서 Transform Bone을 추가하고 Aim Rotator 연결하고 Bone과 Rotation Mode를 설정합니다.   ▣ 컴파일 저장 후 마우스 위아래를 회전하면서 확인합니다. 2024. 5. 26.
언리얼엔진5 BuzzingSound ▣ 먼저 BuzzingSound를 다운로드하여 Content에 Import 합니다.    ▣ Audio에서 Sound Attenuation을 생성하고 Falloff Distance 값을 조절합니다.  ▣ Sound Attenuation는 소리 감쇠를 조절합니다.  ▣ 이 섹션에서는 청취자가 사운드에서 멀어짐에 따라 사운드 볼륨이 어떻게 감소(감쇠)하는지 정의합니다. 사운드의 볼륨은 감쇠 모양의 내부 영역 내에서 최대가 됩니다. 청취자가 이 내부 영역에서 멀어지면 사운드 볼륨이 감소하여 외부 영역 경계에서 최소 볼륨에 도달합니다. 거리에 따른 감쇠율은 감쇠 함수에 의해 결정됩니다. https://dev.epicgames.com/documentation/en-us/unreal-engine/sound-atte.. 2024. 5. 24.
언리얼엔진5 Level Stream ▣ 먼저 Windows에서 레벨창을 추가하고 Add Existing으로 레벨을 추가합니다.   ▣ Blueprint Actor를 하나 생성하고 벽, 문, 로딩할 때 충돌하는 콜리전까지 추가합니다.  ▣ 그리고 Event Graph에서 콜리전에 충돌하면 Load Steam Level 함수로 로드 후에 보이게 하고 문이 열리는 노드를 완성합니다.  ▣  Load Stream Level 노드에서 로드 후 보이게 만들기(Make Visible After Load)로드 시 블록 필요(Should Block on Load)  https://dev.epicgames.com/documentation/en-us/unreal-engine/loading-and-unloading-levels-using-blueprints-i.. 2024. 5. 23.
언리얼엔진5 c++ AnimIstance 변수변경 ▣ AnimIstance class 헤더를 추가합니다. UPlayerAnimInstance* Animinstace = Cast(GetMesh()->GetAnimInstance()); 처럼캐스팅을 하고 캐스팅한 변수를 접근하여 변수를 변경합니다. 2024. 5. 16.
언리얼엔진5 Door Passworld System ▣ 먼저 Door에 관련된 Blueprint Actor를 생성합니다.   ▣ StaticMesh를 추가해서 Door벽 역할을 하는  DoorBody, 문을 열고 닫는 역할을 하는 Door 그리고 Door Key 역할로  DoorButton을 생성하고 DoorButton만 Trace에 충돌되게 Collision 설정합니다.   ▣ DoorButton에 Tag를 지정합니다. ▣ Event Graph로가서 Door를 Open 했을 때에 대한 Event Node도 완성합니다.   ▣ Widget Blueprint를 생성하고 CanvasPanel 그리고 KeyPad BackGround 역할로 Image를 추가하고UniformGridPanel을 추가하여 button 여러 개를 넣어서 PassWorld 입력하는 버튼.. 2024. 5. 13.
언리얼엔진5 SpawnAIFromClass ▣ 먼저 Enemy cpp로가서 AIControllerClass에 대한 설정과 AutoPossessAI 설정을 하는 코드를 작성합니다. ▣  AutoPossessAI 종류 Disabled 기능이 비활성화되었습니다(AI를 자동으로 보유하지 않음). PlacedInWorld 폰이 세계에 배치된 경우에만 AI 컨트롤러가 소유합니다. Spawned 월드가 로드된 후 Pawn이 스폰된 경우에만 AI 컨트롤러가 소유합니다. PlacedInWorldOrSpawned 폰은 생성될 때마다 AI 컨트롤러에 의해 자동으로 소유됩니다.  ▣ AI가 있는 스폰 하려면 Unreal Engine에서 "Spawn Actor for Class" 대신 "Spawn AI From Class" 노드를 사용해야 합니다. 이는 AI 캐릭터가 .. 2024. 5. 9.
언리얼엔진5 Inventory DataTable save ▣ 먼저 Blueprint Structure 두 개를 생성합니다. FItemData는 아이템 데이터를 관리하는 구조체이고 FSlot 저장할 아이템 이름과 아이템 수에 관한 구조체입니다.   https://dev.epicgames.com/documentation/ko-kr/unreal-engine/blueprint-variables-in-unreal-engine?application_version=5.3 언리얼 엔진의 블루프린트 변수 | 언리얼 엔진 5.4 문서 | Epic Developer Community값을 가지거나 월드 내 오브젝트나 액터를 참조하는 프로퍼티입니다.dev.epicgames.com   ▣ 아이템에 ItemData를 반환하기 위한 블루프린트 인터페이스를 생성합니다. 생성한 블루프린트 인.. 2024. 5. 6.
언리얼엔진5 Inventory Widget ▣ 먼저 Inventory Widget을 생성합니다.   ▣ 생성한 Inventory Widget으로 가서 Canvas Panel를 추가하고 Canvas Panel에 Blackground Blur와 Image, Border를 각각 배치합니다.   ▣ Background Blur에 디테일탭에 Blur Stregth 효과를 5.0으로 지정합니다.   ▣ 그리고 Widget Animation을 두 개 생성하고 Render Opacity로 투명도를 조절하는 애니메이션을 완성합니다. InventoryEffect는 Inventory가 처음 나올 때 점점 나타나고InventoryEffectOut은 Inventory가 점점 사라지는 효과입니다.    ▣ Graph로 가서 Event Contruct에는 Inventory.. 2024. 5. 6.
언리얼엔진5 c++ CalculateDirection ▣ 애니메이션 블루프린트에 노드처럼 c++ 코드에서도 먼저 Angle 변수선언을 하고 CalculateDirection() 함수를 호출하여 필요한 데이터를 매개변수에 넣고 저장합니다.  ▣ 컴파일 후 애니메이션블루프린트에 스테이트머신에서 블랜드스페이스에 변수에 값을 연결하고 플레이를 하면 방향에 맞게 블랜드스페이스 애니메이션이 실행됩니다. 2024. 5. 5.
언리얼엔진5 c++ CharacterMovement ▣ 먼저 h헤더파일에 CharacterMovementComponent에 데이터를 저장할 변수를 선언하고 GetCharacterMovement()를 대입합니다.   ▣ cpp파일에서 필요한 헤더를 추가하고  ▣ CharacterMovement변수를 접근하여 변경하고 싶은 Speed를 대입해서 변경하면 됩니다. 2024. 5. 4.
언리얼엔진5 c++ BehaviorTree(BTService 생성 및 사용) ▣ Add Service에서 Set  Default Focus를 추가하여 BehaviorTree에서 Ai에 Focus를 변경할 수 있습니다.  ▣ 서비스(Services)는 컴포짓(Composite) 또는 태스크(Task) 노드에 어태치 되며, 분기가 실행 중인 동안 정의된 빈도로 실행됩니다. 보통 블랙보드의 확인과 업데이트에 사용됩니다. 이 노드는 다른 비헤이비어 트리 시스템에서 전통적인 병렬(Parallel) 노드를 대체합니다. ▣ Default Focus는 AI 컨트롤러(AI Controller)의 포커스를 설정하여 블루프린트 및 코드의 액터에 액세스 하는 바로가기를 생성합니다. AI 컨트롤러의 포커스를 액터로 설정하면 블랙보드 키에 액세스 하지 않고 AI 컨트롤러에서 직접 액세스 할 수 있습니다... 2024. 4. 30.
언리얼엔진5 c++ AIController(Focus, Move) ▣ 먼저 AiController c++ 코드를 생성합니다.   ▣ 그리고 생성한 c++ AiController를 상속한 블루프린트도 생성합니다.   ▣ 적 블루프린트에 들어가서 디테일탭에 Ai Controller Class를 아까 생성한 AiController 블루프린트로 지정합니다.   ▣ AiController c++ 코드에. h 헤더파일로 들어가서 BeginPlay(), Tick() 함수를 선언하고 함수 정의까지 진행합니다.   ▣. cpp 파일로 가서 #include "Kismet/GameplayStatics.h"를 선언합니다. 그리고 Tick() 함수에 플레이어 Pawn을 저장하는 코드, Ai 시선처리하는 함수, Ai 이동하는 함수 코드를 완성합니다.  ▣ UGameplayStatics::Get.. 2024. 4. 27.
언리얼엔진5 엘리베이터 ▣ 먼저 엘리베이터 블루프린트를 생성하고 Cube Static Mesh를 활용하여 엘리베이터 틀과 버튼을 상속해서 만듭니다.  ▣ Event Graph에서 Event Custom으로 Event 노드를 생성합니다.   ▣ Move Component To 노드를 활용하여 버튼을 클릭하면 Button이 움직이고 엘리베이터가 위아래로 움직이는 노드를 완성합니다.  ▣ Move Compoent To 노드에 이동 위치 및 보간시간을 조절해서 연결합니다. https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Components/MoveComponentTo?application_version=5.3 Move Component ToMove Co.. 2024. 4. 26.
언리얼엔진5 c++ ParticleSystem(SpawnEmitterAtLocation) ▣ 먼저 파티클시스템을 저장할 변수를 선언합니다.   ▣ 그리고 cpp파일에서 #include "Kismet/GameplayStatics.h"와 #include "Particles/ParticleSystem.h" 헤더를 추가합니다.  ▣ "Kismet/GameplayStatics.h"   : 블루프린트와 C++ 모두에서 호출할 수 있는 유용한 게임플레이 유틸리티 함수가 포함된 정적 클래스 ▣ #include "Particles/ParticleSystem.h"  : ParticleSystem은 원하는 수의 ParticleEmitters를 포함하는 클래스 https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Kismet/.. 2024. 4. 26.