본문 바로가기

언리얼89

언리얼엔진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 이동하는 함수 코드를 완성합니다.  ▣.. 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 .. 2024. 4. 26.
언리얼엔진5 c++ 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/E.. 2024. 4. 26.
언리얼엔진5 Blend Poses Enum ▣ 먼저 Blueprint에서 Enumeration을 생성합니다. ▣ 그리고 두 개의 Fire State에 대한 Enum 값을 생성합니다. ▣ Player 블루프린트에서 아까 생성한 Enum에 대한 변수를 생성하고 1번 키를 누르면 Pistol 상태, 2번 키를 누르면 Rifle 상태에 대한 노드를 완성합니다. ▣ 애니메이션 블루프린트로와서 Blend와 Enum 이름을 검색하면 Enum에 대한 Blend Poses 노드가 나옵니다. 이걸 선택하고 https://dev.epicgames.com/documentation/ko-kr/unreal-engine/animation-blueprint-blend-nodes-in-unreal-engine?application_version=5.3 언리얼 엔진의 애니메이션.. 2024. 4. 23.
언리얼엔진5 c++ PlaySound ▣ 먼저 언리얼에서 지원하는 소리를 다운로드합니다. https://docs.unrealengine.com/4.27/ko/WorkingWithAudio/Overview/ 오디오 시스템 개요 사운드 큐 노드 기반 오디오 애셋 사용법을 포함해서, 게임내 사운드 재생에 사용되는 오디오 시스템에 대한 개요서입니다. docs.unrealengine.com ▣ 소리를 재생할 c++ 클래스에 들어가서 .h 파일에서 소리에 대한 변수를 선언합니다. ▣. cpp 파일로 가서 소리를 재생하기 함수가 있는 #include "Kismet/GameplayStatics.h"를 선언합니다. ▣ GameplayStatics : 블루프린트와 C++ 모두에서 호출할 수 있는 유용한 게임플레이 유틸리티 함수가 포함된 정적 클래스 https.. 2024. 4. 23.
언리얼엔진5 c++ HUD Widget ▣ 먼저 Widget Blueprint를 생성하고 CrossHair 이미지를 넣어 컴파일 저장합니다. ▣ Build.cs로 코드로 가서 UMG 키워드와 PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 주석을 해제합니다. 이 두가지는 UMG에 대한 코드를 사용하기 위함입니다. ▣ .h 헤더파일로 가서 두 개의 유저위젯 변수를 추가합니다. ▣ TSubclassOf는 UClass 유형의 안전성을 보장해 주는 템플릿 클래스입니다. 예를 들어 디자이너가 대미지 유형을 지정하도록 해주는 프로젝타일 클래스를 제작 중이라 가정합시다. 그냥 UPROPERTY 유형의 UClass를 만든 다음 디자이너가 항상 UDamageType 파.. 2024. 4. 22.
언리얼엔진5 c++ socket에 StaticMesh 적용 ▣ 먼저 Mesh 스켈레톤에 Socket을 추가하고 총을 프리뷰로 가져와서 회전 및 위치를 지정합니다. ▣ StaticMeshComponent를 추가하기 위해 변수를 먼저 선언부에 선언합니다. ▣ StaticMeshComponent 생성 및 상속 그리고 Sock에 상속할 코드를 완성합니다. ▣ AttachToComponent() 함수 매개변수 끝에 SockName을 지정합니다. https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/GameFramework/AActor/AttachToComponent/ AActor::AttachToComponent Attaches the RootComponent of this Actor to the supplied co.. 2024. 4. 20.
언리얼엔진5 c++ AnimInstance Montage 구르기 ▣ 먼저 가져온 애니메이션에 디테일에서 EnableRootMotion을 체크합니다. 그럼 애니메이션으로 이동되는 경로가 고정됩니다. ▣ 그리고 애니메이션을 몽타주로 생성하고 애니메이션 블루프린트에 연결까지 진행합니다. ▣ InputMappingContext에 Rolling에 대한 InputAction을 추가합니다. ▣ 플레이어 C++에. h 헤더에서 애니메이션 몽타주에 대한 변수, 입력변수, 함수를 선언합니다. ▣. cpp에서 InputAction에 대한 경로 지정 및 바인딩 코드를 완성하고 Rolling함수 안에서 AnimInstance를 가져와 Montage_Play() 함수를 이용해서 몽타주를 플레이하는 코드를 완성합니다. https://docs.unrealengine.com/4.27/en-US/A.. 2024. 4. 18.
언리얼엔진5 c++ Animation(move, jump) ▣ Add C++ Class에서 All Classes를 선택해서 Animinstance를 생성합니다. ▣ Animation Blueprint를 생성하고 밑에 Parent Class에서 아까 생성한 Animinstance를 선택하고 생성합니다. ▣ 플레이어 C++코드로 들어가서 SetAnimInstanceClass를 지정해야 합니다. FClassFinder를 이용해서 Class를 가져오는데 애니메이션블루프린트 경로를 먼저 복사해서 그대로 붙여 넣고 ▣ 위에 있는 경로처럼 필요한 경로만 넣어주시고 Class를 가져오기 때문에 맨 끝에 _C를 추가하고 저장합니다. ▣ 컴파일 후 Player블루프린트에서 Animation 메뉴에 Anim Class를 확인하면 애니메이션 블루프린트 클래스가 추가된 걸 확인할 수 .. 2024. 4. 17.
언리얼엔진5 c++ EnhancedInput ▣ EnhancedInput 입력 Context와 InputAction을 생성합니다. ▣ Project Settings -> Input -> Default Classess에 EnhancedInput과 Component를 설정했는지 확인합니다. 그리고 플레이어 C++ 코드를 불러옵니다. ▣ 솔루션 탐색기에서 Source폴더에 프로젝트폴더에 프로젝트이름. Build.cs를 찾아서 PublicDependencyModuleNames.AddRange()함수코드에 "EnhancedInput"을 추가하고 저장합니다. ▣ 그리고 플레이어 캐릭터 C++에. h 헤더로 가서 #Include "InputActionvalue.h"를 추가합니다. 이때 빨간 줄로 오류가 나오는 경우가 있습니다. 저장 후 ▣ 프로젝트 경로로 가서.. 2024. 4. 15.
언리얼엔진5 c++ Camera SpringArm ▣ UPROPERTY() : 변수에 붙은 리플렉션 매크로 ▣ 에디터 접근을 위한 매크로 https://dev.epicgames.com/documentation/ko-kr/unreal-engine/unreal-engine-uproperties?application_version=5.3 언리얼 엔진 UProperty 게임플레이 클래스에 대한 프로퍼티 생성 및 구현 관련 레퍼런스입니다. dev.epicgames.com ▣ SpringArm, Camera 컴포넌트를 사용하기 위한 헤더 추가 #include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h" ▣ CreateDefaultSubobject(컴포넌트 이름) : 구성 요소 또.. 2024. 4. 14.
언리얼엔진5 c++ SkeletalMesh 설정 ▣ Tools에서 New C++ Class를 클릭합니다. ▣ Character Class로 선택하고 이름과 경로를 지정한 다음에 생성합니다. ▣ ContructorHelpers는 ObjectBase.h 에 정의되는 특수한 네임스페이스로, 생성자 전용 흔한 동작을 수행하는 데 사용하는 헬퍼 템플릿이 들어 있습니다. 예를 들어, 에셋이나 클래스로의 레퍼런스 검색은 물론 컴포넌트 생성 및 검색용 헬퍼 템플릿이 있습니다. ▣ 사용방법 : ContructorHelpers::FObjectFinder변수이름(TEXT("경로"); 경로는 가져올 Mesh에서 오른쪽마우스를 클릭하고 Copy Reference로 저장한 후에 붙여 넣습니다. https://dev.epicgames.com/documentation/ko-kr/.. 2024. 4. 14.
언리얼엔진5 UMG 불투명 애니메이션 ▣ 위젯블루프린트를 생성하고 불투명하게 해 줄 Text를 생성하고 Animation에서 render opacity를 0, 1로 각각 애니메이션에서 지정합니다. render opacity는 불투명도를 의미합니다. ▣ 레벨블루프린트로 들어가서 Squence노드를 활용하여 두 개를 동시에 호출하여 애니메이션이 재생되고 소리가 나오게 노드를 완성합니다. ▣ Sequence 노드는 한 번의 실행 신호로 일련의 이벤트를 순서대로 발동시키는 노드입니다. 이 노드에는 출력이 몇이든 있을 수 있으며, Sequence 노드가 입력을 받자마자 그 모두가 호출됩니다. 그들 모두 순서대로 지연 없이 호출됩니다. 전형적인 사용자에게는 이 출력들이 동시에 발동된 것처럼 보일 것입니다. 이 예제에서 Sequence 노드는 레벨 시작.. 2024. 4. 12.
언리얼엔진5 타이머 ▣ Get World Delta Seconds 노드를 이용해서 변수에 값을 더해서 타이머를 완성합니다. https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Utilities/Time/GetWorldDeltaSeconds?application_version=5.3 Get World Delta Seconds Get World Delta Seconds dev.epicgames.com ▣ 컴파일 저장 후 플레이를 해보면 Float 형식으로 타이머가 출력됩니다. ▣ 이번에는 Delay 함수를 이용해서 1초마다 변수에 +1을 더하는 방식으로 타이머를 완성합니다. ▣ 컴파일 저장 후 1초마다 변수 값이 하나씩 늘어나 출력되는 걸 확인할 수.. 2024. 4. 6.
언리얼엔진5 Ai move to (Ai 랜덤이동, Ai 공격) ▣ Enemy ai를 만들 Character 클래스를 생성합니다. ▣ BP_EnemyAi로 이름을 지정하고 메뉴 들어가서 Mesh를 지정하고 PawnSensing 컴포넌트를 추가합니다. ▣ Event Graph에서 Add Custom Event를 추가하여 Follow Player, RandomMove 두 개 Event를 생성합니다. Follow Player는 플레이어를 발견하면 플레이어를 따라가는 이벤트 RandomMove는 플레이어를 발견하지 않는 상태에서는 랜덤으로 이동하는 이벤트입니다. ▣ Ai move to를 검색하여 Ai move to 노드도 추가합니다. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/BlueprintAPI/AI/AIM.. 2024. 4. 6.
언리얼엔진5 geometry material 모두 적용 ▣ 적용할 geometry Box를 선택하고 Shift + B 키를 누르면 모든 면이 선택됩니다. ▣ 그리고 Suface Materials에 원하는 Material을 넣으면 이렇게 모두 적용되는 걸 확인할 수 있습니다. 2024. 4. 6.
언리얼엔진5 폰 감지 ▣ 먼저 Enemy Pawn Class를 생성합니다. ▣ Enemy에 Static Mesh를 추가하고 Pawn Sensing 컴포넌트를 추가합니다. https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/AI/Components/PawnSensing/GetPeripheralVisionAngle Get Peripheral Vision Angle Get Peripheral Vision Angle dev.epicgames.com ▣ Details에서 Pawn 감지 영역값을 지정합니다. ▣ Evets메뉴에서 On See Pawn 이벤트를 추가합니다. ▣ Find Look at Rotation 노드를 사용하여 플레이어가 감지되면 해당 위치.. 2024. 4. 4.
언리얼엔진5 샷건 시스템 ▣ Line Trace를 여러 개 반복하는 For Loop를 연결하고 End 입력핀에 현재위치 + 방향 * 길이 + 에서 더하기를 하여 x, y, z에 Random Float in Range노드를 사용하여 랜덤으로 x, y, z 값을 넣고 더합니다. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/BlueprintAPI/Math/Random/RandomFloatinRange?application_version=5.3 Random Float in Range Random Float in Range dev.epicgames.com ▣ 그리고 Line Trace에 Hit 하게 되면 먼저 Is Simulating Physics 노드로 Simulating .. 2024. 4. 3.
언리얼엔진5 스프라이트 자르기 ▣ Texture에서 오른쪽마우스를 클릭하고 Sprite Actions에서 Extract Sprites 클릭합니다. ▣ Sprite Extract를 설정하고 Extract클릭합니다. ▣ 그럼 이렇게 Sprite로 잘려서 나뉘게 됩니다. 2024. 4. 2.
언리얼엔진5 사다리 시스템 ▣ 사다리 Actor를 생성하고 Static Mesh와 Box Collision Component를 추가합니다. ▣ Box Collision에 Begin Overlap, End Overlap event노드를 각각 추가하고 사다리가 닿게 되면 BP_Player에 isLadder 변수가 True, False가 되는 노드를 연결하고 사다리에서 End 이벤트가 호출되면 Set Movement Mode에서 Walking모드로 다시 돌아가는 노드를 추가합니다. https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Pawn/Components/CharacterMovement/SetMovementMode?application_version=5.. 2024. 4. 1.
언리얼엔진5 조준 애니메이션 ▣ BP_Player에서 RifleAim에 대한 입력시스템을 추가하고 isRifleAim에 대한 boolean 변수를 생성합니다. ▣ ABP에 Event Graph에서 BP_Player에 isRifleAim을 Get 해서 ABP에 isRifleAim에 SET을 합니다. ▣ 스테이트 머신을 생성하고 RifleIdle State와 RifleAim을 각각 생성하고 isRifleAim 변수로 조건을 연결합니다. ▣ 그리고 RifleLocomotion을 cached pose에 save해서 연결합니다. https://dev.epicgames.com/documentation/en-us/unreal-engine/using-layered-animations-in-unreal-engine?application_versio.. 2024. 3. 26.