본문 바로가기

언리얼엔진163

언리얼엔진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 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++ 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(LineOfSightTo : 시선방향) ▣ LineOfSightTo() 함수를 활용하여 시선에 보이면 True로 시선에 있지 않으면 False로 반환하는 함수를 활용하여 조건문을 만들었습니다. ▣ LineOfSightTo() : 다른 배우의 중앙과 상단까지 라인을 확인합니다. ▣ AAIController::ClearFocus : 지정된 우선순위에 대해 Focus를 지우고 결과적으로 FocalPoint도 지워집니다. ▣ AAIController::StopMovement : 컨트롤러가 현재 수행 중인 이동을 중단합니다. https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Controller/LineOfSightTo?application_version=5.3 Line O.. 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.
언리얼엔진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++ GameMode Default Pawn ▣ 먼저 Game Mode Base C++ 클래스를 생성합니다. ▣ 먼저 클래스 생성자를 선언부에 선언합니다. ▣ 구현부. cpp에서 플레이어. h 헤더를 포함하고 기본 Pawn클래스로 지정할 클래스 경로를 복사하고 그 경로를 가져와서 DefaultPawnClass에 대입합니다. ▣ 컴파일 후 World Settings에 Game Mode를 생성한 C++로 지정하면 Default Pawn Class 가 코드로 지정한 Pawn로 바뀐 걸 확인할 수 있습니다. 2024. 4. 20.
언리얼엔진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 spring arm 제어 ▣ spring arm에 위치를 제어해서 카메라 위치를 옮기면 이렇게 spring arm에 대한 충돌이 어느 방향에서는 충돌하되지 않아 벽을 통과하는 문제가 발생합니다. ▣ 이럴 때에는 SpringArm에 위치는 Player Mesh 위치에 있어야 벽을 통과하는 문제가 해결되고 카메라에 위치는 Target Arm Length와 Socket Offset, Target Offset를 이용해서 제어해야 합니다. 먼저 Socket Offset에 위치를 바꿔서 카메라에 위치를 조절하겠습니다. ▣ 그럼 이렇게 벽을 통과하는 문제는 해결되지만 벽이 닿이는 시점에 따라 카메라 위치가 바뀌게 됩니다. ▣ 이번에는 Socket Offset으로 위치를 변경하겠습니다. ▣ 그럼 카메라가 반전되는 문제는 해결되지만 카메라를 가.. 2024. 4. 12.
언리얼엔진5 슬로우모션 ▣ Set Global Time Dilation노드는 전역 세계 시간을 설정하는 노드입니다. 1.0은 일반속도, 1.0보다 크기 되면 전역 세계 속도가 빨라지고 1.0보다 작게 설정하면 전역 세계 속도가 느려집니다. https://docs.unrealengine.com/4.27/en-US/BlueprintAPI/Utilities/Time/SetGlobalTimeDilation/ Set Global Time Dilation Set Global Time Dilation docs.unrealengine.com ▣ Custom Time Dilation 노드는 플레이어 속도를 제어합니다. 단 솔로모드 일 때 가능합니다. 0.5로 설정하면 Half Speed Global Time에 반 속도로 1로 설정하면 Worl.. 2024. 4. 7.
언리얼엔진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 1인칭 3인칭 시점 변경 ▣ 먼저 1인칭 시점 카메라를 Mesh에 추가하고 Sockets을 head 머리로 지정하고 회전값을 시점에 맞게 변경합니다. ▣ Event Graph에서 V키를 누르면 1인칭 3인칭을 활성화 비활성화하는 노드를 완성합니다. ▣ 노드는 디테일탭에 있는 Activate를 체크 및 해제를 해서 조절하기 위함입니다. ▣ V 키를 누르면 이렇게 1인칭 3인칭 시점이 변경되는 걸 확인합니다. 2024. 4. 6.
언리얼엔진5 geometry material 모두 적용 ▣ 적용할 geometry Box를 선택하고 Shift + B 키를 누르면 모든 면이 선택됩니다. ▣ 그리고 Suface Materials에 원하는 Material을 넣으면 이렇게 모두 적용되는 걸 확인할 수 있습니다. 2024. 4. 6.
언리얼엔진5 material 텍스처 타일링 변경 ▣ 변경하고 싶은 material을 복제합니다. ▣ material 편집 툴에서 오른쪽마우스를 클릭하고 TextureCoordinate를 검색하여 노드를 추가합니다. ▣ TextureCoordinate 는 2채널 벡터값 형태로 UV 텍스처 좌표를 출력하여, 머티리얼에 다른 UV 채널을 사용하거나 타일링을 지정하거나 메시 UV 에 다른 작업을 하거나 할 수 있는 표현식입니다. https://docs.unrealengine.com/4.27/ko/RenderingAndGraphics/Materials/ExpressionReference/Coordinates/ Coordinates 표현식 텍스처 좌표나 텍스처 좌표를 수정 또는 그 자체로 사용할 수 있는 출력값에 어떠한 작업을 하는 표현식입니다. docs.unr.. 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 스프라이트 자르기 ▣ 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 애니메이션 몽타주 애니메이션 끝까지 실행하는 방법 ▣ 애니메이션 몽타주를 호출해도 끝까지 애니메이션을 실행하지 않을 때 애니메이션에 End Time에 값을 Play Anim Montage 노드함수에 In Play Rate 값을 동일하게 하면 됩니다. 2024. 3. 27.