전체 글 403

[UE4] 델리게이트(DELEGATE) 종류

💡 델리게이트(DELEGATE)의 종류 이름 사용대상 반환값 (Return) 존재 여부 블루프린트 공개 여부 설명 DECLARE_DELEGATE 1 : 1 O X 함수포인터와 같아서 함수포인터라고 생각하면 쉽다. DECLARE_MULTICAST_DELEGATE 1 : n X X 파라미터 갯수와 타입만 일치시킨다. DECLARE_EVENT 1 : n X X DECLARE_MULTICAST_DELEGATE 와 동일한데 클래스 내부 한정이라는 차이점이 존재한다. DECLARE_DYNAMIC_DELEGATE 1 : 1 O O DECLARE_DYNAMIC_MULTICAST_ DELEGATE 1 : n X O 블루프린트에서 사용했던 이벤트 디스패처와 같다. 파라미터 갯수, 타입, 변수명까지 모두 일치시킨다. DEC..

🎮Unreal4/Basic 2023.03.03

[UE4] Collision -2 : Component Overlap, Overlap And Hit

Actor Component 보다 실제로 많이 사용되는 Component Overlap을 구현해보았다. 🤸 Component Overlap 델리게이트로 사용될 함수를 작성하는 방법은 이전 게시글에서 설명해두었다. (F12를 통해 함수의 정의를 확인하며 매개변수를 복사 해 오는 방법) 2023.03.02 - [Unreal4/C++] - [UE4] Collision -1 : Actor Overlap 같은 방법으로 OnComponentBeginOverlap 과 OnComponentEndOverlap 함수를 직렬화하여 작성하였다. 각 이벤트의 매개변수는 블루프린트에서 사용했던 매개변수와 동일하다! 이전 Actor Overlap에서는 Actor 자체의 이벤트를 사용한 경우였고, 이젠 Box 콜라이더에 있는 이벤트..

🎮Unreal4/C++ 2023.03.02

[UE4] Collision -1 : Actor Overlap

Character의 Spawn과 이동을 모두 구현하였으니 다음으로 Actor의 Overlap 충돌을 구현해보았다. 📦 Test Box Collision 만들기 먼저, Overlap 충돌을 테스트할 Box Collision을 갖는 액터를 생성해주었다. USceneComponent 를 Root 컴포넌트로 갖고, 자식 컴포넌트로 Box Collision과 Text Render 컴포넌트를 추가해주었다. 이때 Box의 기본 HiddenInGame 설정을 false로하여 테스트가 용이하게끔 뷰포트에 나타내었다. Scale값은 FVector(3) 로 전달하였는데, 이렇게 하나의 벡터값만 전달하면 X, Y, Z 값이 전부 3으로 동일하게 초기화된다. CreateTextRender() 함수는 Global.cpp 파일에 ..

🎮Unreal4/C++ 2023.03.02

[Portfolio] DualSword 공중콤보공격 마무리, Dead 애니메이션

https://youtu.be/QtY_dpjqhKM 진행중인 작업 - 파티클 에셋 찾기 진행 예정 작업 - 플레이어 - 방어, 방어해제 구현 - 다운공격, 반격, 맵적용, IK, Parkour 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리

[UE4] Player 이동, 회전 (MoveForward, MoveRight, OnHorizontalLook, OnVerticalLook, Walk, Run)

🚩 ACharacter - CPlayer 클래스 함수 선언 캐릭터의 움직임과 회전을 구현하기 위해 ACharacter 를 상속받는 Player 클래스에 함수들을 추가하였다. 가장먼저, 방향키 등의 입력값을 받아오기 위해 Input Component 헤더파일을 추가하였다. ACharacter의 SetupPlayerInputComponent 함수를 재정의하여 사용하였는데, 이 함수는 기본적인 Player Controller를 사용하여 입력값을 받을 수 있다. 🚩 Move Forward, Move Right BindAxis 함수를 통해 축과 이벤트를 연결할 수 있다. 이때 이벤트는 함수포인터를 통해 연결하기 때문에 this 객체와 함수의 주소를 전달한다. (MoveForward, MoveRight, Horiz..

🎮Unreal4/C++ 2023.02.28

[UE4] ACharacter - Player 만들기 (Character Mesh, AnimInstance, Animation Blueprint, GameModeBase)

Character 클래스를 만들어 뷰포트에서 제어할 Player를 만들어보았다. 1. ACharacter 상속받는 클래스 만들어서 SpringArm, Camera 생성하기 먼저, Capsule Component 바로 밑에 붙일 Spring Arm과, Camera를 직렬화하여 생성해주었다. 이후, CapsulComponent를 가져와서 부모로 설정해줘야하기 때문에 헤더파일을 불러오고, 나머지 변수를 초기화할 SpringArm, Camera 헤더파일도 호출하였다. 이전에 간단히 Component를 생성하기 위해 만들어두었던 CreateComponent에는 부모 Component를 설정하는 코드가 없었다. 따라서 CreateComponent의 마지막 매개변수로 부모 Component가 들어온다면, (즉 부모 ..

🎮Unreal4/C++ 2023.02.28

[UE4] PointLight 만들기, Ease Out Bounce 적용시키기

💡 Point Light Point Light를 생성하기 위해 UPointLightComponent 객체를 선언하였다. 이런식으로 객체를 생성하고 나서 구글에 객체명을 검색하면 include 시킬 헤더파일의 경로와, 매개변수 등의 다양한 정보를 찾을 수 있다. https://docs.unrealengine.com/4.26/en-US/API/Runtime/Engine/Components/UPointLightComponent/ UPointLightComponent A light component which emits light from a single point equally in all directions. docs.unrealengine.com UPointLightComponent 객체를 사용하기위해 C..

🎮Unreal4/C++ 2023.02.28

[UE4] Draw Debug (SolidBox, Point, Sphere, Circle, Line, Capsule, DirectionArrow)

Draw Debug 함수를 C++ 클래스에서 사용해보았다. DrawDebugSolidBox - 속이 채워져있는 직육면체를 출력한다. DrawDebugPoint - 점을 출력한다. (이때 점은 사각형이다) - 점은 항상 카메라 방향을 바라보는데, 이렇게 항상 카메라를 바라보는 면을 빌보드라고 부른다. DrawDebugSphere - 구 모양을 출력한다. DrawDebugCircle - 2D 원 모양을 출력한다. DrawDebugLine - 시작점부터 끝점까지의 라인을 출력한다. DrawDebugCapsule - 긴 원통형 모양인 캡슐을 출력한다. DrawDebugDirectionArrow - 화살표가 주어진 방향을 바라보도록 출력한다. 결과적으로 왼쪽부터 차례로 Solid Box, Sphere, Line,..

🎮Unreal4/C++ 2023.02.27

[UE4] Log 출력, ELogVerbosity 로그 유형, __매크로__, Print 출력(AddOnScreenDebugMessage)

⌨️ Log 출력 프로그래밍 과정 중 꼭 필요한 Debug를 도와줄 Log 작성 코드를 셋팅해보았다. CLog 라는 이름의 헤더파일과 cpp 파일을 각각 생성한 뒤, Log와 Print를 도와줄 static 함수들을 변수 유형별로 선언해두었다. Log를 출력할 때 분류하기 유용한 카테고리는 DEFINE_LOG_CATEGORY_STATIC 명령어를 통해 생성할 수 있다. DEFINE_LOG_CATEGORY_STATIC 명령어의 매개변수로는 카테고리명과, 로그유형, 로그형식을 전달해주면 된다. 로그유형과 로그형식에 따라 종류가 매우 많으므로 간단히 정리해보았다. ELogVerbosity는 로그를 어떻게 출력할 것인지의 정보를 Enum 값으로 가져 상세 목록을 제공한다. ⌨️ ELogVerbosity::Enu..

🎮Unreal4/C++ 2023.02.27

[UE4] Actor 스폰하기 (TSubclassOf<>, GetWorld(), SpawnActor<>())

🔶 TSubclassOf Cube Mesh를 상속받아 Cone과 Sphere 모양의 Mesh 클래스도 만들었다. 이후 해당 Mesh 클래스들을 모두 자손 블루프린트로 생성하여 3개의 서로 다른 모양을 갖는 클래스를 Spawn시키는 Spawner를 생성하였다. 이때 Spawner 클래스에서 Spawn 시킬 클래스를 담는 SpawnClasses 배열 변수를 선언하였는데, 이때 사용한 TSubclassOf는 특정 클래스 이하의 클래스들만 범위로 나타내기 위함이다. TSubclassOf를 사용하지 않고 UClass를 그대로 직렬화하여 나타내면 블루프린트에서 모든 UClass가 출력된다. 그러나 이렇게 모든 클래스가 나타나면 사용할 클래스를 선택하기 쉽지도 않고, 협업할 때에 상대방을 위해 C02_Mesh 클래스..

🎮Unreal4/C++ 2023.02.27

[UE4] Material 가져오기, Material Color 변경, Timer 설정 (StaticFindObject, Cast<>, Kismet System Library, MakeRandomColor)

🚩 Material 이렇게 불러온 Mesh에 Material을 생성해 입혀보기 위해 Material Instance Dynamic 자료형을 선언하여 호출하였다. Material도 CHelpers 클래스에 템플릿화하여 작성하였다. 이전에 Mesh를 생성할 때는 ConstructorHelpers 클래스를 이용하여 ObjectFinder 함수를 사용했는데, Material은 동적으로 초기화되기 때문에 Constuctor 클래스를 사용하지 못한다. 말 그대로 ConstructorHelpers 클래스는 "초기화" 클래스이므로 생성자에서만 사용이 가능하기 때문이다. 따라서 동적 오브젝트 생성을 위해 StaticFindObject 함수를 사용하였다. Static이라는 키워드를 사용하여 한번만 호출한 뒤 계속해서 동적..

🎮Unreal4/C++ 2023.02.27

[Portfolio] DualSword 공중콤보공격

https://youtu.be/aMyZaoiJug4 진행중인 작업 - 공중 공격 애니메이션 중 프레임 멈춰있는 부분 수정하기 - 중력, 가속도 값 알맞게 조절 진행 예정 작업 - 플레이어 - 공중콤보 공격 - Enemy 띄워서 데미지 처리 - 다운공격, 방어, 방어해제, 반격, 맵적용, IK, Parkour 진행 완료 작업 - 에셋 찾기 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현

728x90