전체 글 403

[UE4] CDO 에러, 무기 장착/해제 구조, Abstract 지정자, FORCEINLINE (inline 매크로), FActorSpawnParameters, GetComponent

📕 CDO (Class Default Object) 에러 호출해야 하는 자료(Object)들이 존재하지 않아서 생기는 오류로, 컴파일이 완료된 후 hot reload 상황에서 발생하기 때문에 컴파일은 이미 완료 된 상태에서 에러가 난다. 주로 찾으려는 오브젝트의 경로를 잘못 작성했을 때 발생한다. 📗 무기 장착/해제 기능 구조 class Weapon { virtual void Equip() { if(장착 조건) return; } } class Rifle : Weapon { void Eqiup() { if(장착 조건) // 비효율적인 코드 작성! { Super::Equip(); } } } 무기의 최상의 클래스인 Weapon 클래스를 만들고, Weapon을 상속받는 각각의 종류별 무기(ex. Rifle)을 ..

🎮Unreal4/C++ 2023.03.08

[Portfolio] 타겟팅을 이용한 공중콤보 (공중콤보 업그레이드/보완)

https://youtu.be/uWUpZBLj0IM 진행중인 작업 - 파티클 에셋 찾기 - 타겟지정 스킬 구현 - 공격 후 뒤집었던 칼 자연스럽게 되돌리기 진행 예정 작업 - 플레이어 - 검기 추가 - 밑에서 위로 공격하는 공중콤보 구현 - 다운공격, 맵적용, IK, Parkour 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현

[UE4] LineTraceMulti, LineTraceMultiForObjects (LineTrace by Channel)

💡 LineTraceMulti Line Trace Multi의 종류 중, LineTraceMulti 와 LineTraceMultiForObjects 를 사용해보았다. LineTraceMulti는 Channel 값을 지정하여 충돌을 처리하고, ForObjects는 그려진 Line에 충돌된 모든 객체를 배열(HitResults)로 반환해준다. 여러 개의 큐브를 겹쳐서 충돌 결과를 살펴보면, LineTraceMulti는 처음 충돌된 하나의 큐브에만 충돌반응을 일으키고, LineTraceMultiForObjects는 겹쳐있는 모든 큐브에 충돌반응을 일으켰다. 사실상 LineTraceMulti의 Channel로 충돌하는것은 LineTraceSingle과 비슷하게 구현된다. Channel을 이용한 Multi Tra..

🎮Unreal4/C++ 2023.03.07

[UE4] 다이나믹 멀티 델리게이트, Line Trace (DECLARE_DYNAMIC_MULTICAST_DELEGATE, LineTraceSingleByProfile, BlueprintAssignable)

🚩 DYNAMIC MULTI 델리게이트 Line Trace를 사용해보면서 다이나믹 멀티캐스트 델리게이트를 사용해보자. Dynamic Multi 델리게이트를 사용하기 위해 FLinearTraceResult 라는 델리게이트를 생성하고, 델리게이트에 등록시킬 함수 StartLaunch까지 생성하였다. 다이나믹 델리게이트는 파라미터 개수와 파라미터명까지 전부 똑같아야 하기 때문에 매개변수를 복사하여 함수를 생성했다. Begin Play 시 만들어둔 델리게이트에 AddDynamic 함수로 StartLaunch 함수를 등록해주었다. 🚩 Line Trace Tick 함수가 호출될 때 계속해서 Line Trace를 실행시켰다. 플레이어 단 하나만 추적할것이기 때문에 Single인 LineTraceSingleByProf..

🎮Unreal4/C++ 2023.03.07

[UE4] Sphere Trace (SphereTraceMultiForObjects, meta매크로, TEnumAsByte, AddRadialImpulse)

📚 Trace 🌐 Sphere Trace 박스 안에 위치하는 Sphere Trace에 감지된 액터들이 수류탄처럼 폭발하듯 터지는 기능을 구현해보았다. 먼저 SphereTrace 함수를 실행시키기 위해 필요한 매개변수들을 초기화해주었다. Trace 함수는 UKismetSystemLibrary 클래스에 존재하는데, 자동완성의 종류를 보면 단순 Multi 와, MultiByProfile, MultiForObjects로 총 3가지 종류가 있다. 단순히 Multi라고만 적혀있는 것이 Channel 값을 통해 작동된다. 그러나 C++ 클래스의 내부적인 Trace 정의들을 살펴보면 실제로는 Channel과 Objects 두 종류 뿐이다. Profile은 단순히 사용하기 편하도록 Channel Trace를 나눠놓은 것..

🎮Unreal4/C++ 2023.03.07

[Portfolio] 플레이어 방어,방어해제,반격(Parrying) 기능

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

[UE4] UFUNCTION 함수(BlueprintNativeEvent, BlueprintCallable, BlueprintImplementableEvent)

💡 UFUNCTION - BlueprintNativeEvent 직렬화 함수 UFUNCTION에 있는 BlueprintNativeEvent를 사용하면 블루프린트에서도 함수를 호출하여 사용할 수있다. 또한 BlueprintNativeEvent는 프로그래머들이 기본으로 작성해놓은 함수를 필요하다면 재정의하여 사용해서 쓰는 함수이다. 따라서 기본 내용을 정의하는 함수가 따로 필요하다. (Native라는 키워드가 붙어있으면 C++ 클래스에서 구현하는 함수로 생각하면 된다) 따라서 이를 활용한 예제에서 함수명 뒤에 Implementation() 키워드를 붙여 함수를 정의해주었다. 여기에는 꼭 내용을 정의해야하기 때문에 virtual 키워드가 들어갈 수 없다! 💡 BlueprintCallable 해당 Native E..

🎮Unreal4/C++ 2023.03.05

[UE4] 멀티 델리게이트, 이벤트 델리게이트(DECLARE_MULTICAST_DELEGATE, DECLARE_EVENT)

💻 멀티 델리게이트 - DECLARE_MULTICAST_DELEGATE DECLARE_MULTICAST_DELEGATE를 사용해보기 위해 두 개의 매개변수를 갖는 델리게이트를 사용해보았다. 다른 예제들과 마찬가지로 테스트 Box 콜라이더에 Overlap 충돌되면 델리게이트에 등록된 함수들을 모두 호출하도록 구현하였다. 다른 클래스로 랜덤으로 3개의 Box 중 하나를 떨어뜨리는 FallingBox 클래스, SpotLight를 랜덤 색상으로 켜는 클래스 두 개를 만들었다. 각각의 클래스에서 Multi 델리게이트에 AddUFunction 함수로 등록해주었는데, MULTI는 단일 델리게이트에서 사용한 BindUFunction함수가 아니라 여러개를 추가한다는 의미로 AddUFunction 함수를 사용하여 함수를 ..

🎮Unreal4/C++ 2023.03.05

[UE4] 델리게이트 활용한 Trigger 구현 (DECLARE_DELEGATE), 단일 델리게이트/반환값과 매개변수가 있는 델리게이트

이전에 공부한 델리게이트의 기능을 사용하여 Trigger를 구현해보았다. 💡 델리게이트 활용-1. Component 오버랩 시 Point Light 켜주기 먼저 델리게이트의 자료형을 선언해주었다. 델리게이트의 자료형명은 관례상 F로 시작하여 FBoxLightOverlap으로 이름을 지정해주었다. 해당 델리게이트는 Return 타입이 void이고, 함수명 뒤에 매개변수가 하나도 없는 함수를 연결해줄 수 있다. 또한 MULTICAST가 붙지 않았기 때문에 SINGLECAST이다. 이는 함수와 델리게이트가 1:1로 작동한다. 이후 외부에서 편하게 사용할 수 있도록 public 인 델리게이트 변수를 선언해주었다. 델리게이트는 Componenet Overlap이 호출될 때 IsBound 함수를 통해 연결된 함수가..

🎮Unreal4/C++ 2023.03.03
728x90