전체 글 403

[알고리즘] 동적 계획법(DP), 메모이제이션(Memoization) - 피보나치 수

피보나치 수 알고리즘에 대해선 일반 재귀함수/반복문 으로 푸는 방법만 알고 있었다. 이번에는 동적 프로그래밍(Dynamic Programming, DP)을 공부하면서 배열에 피보나치 수열의 값을 저장해두고 재사용하여 풀이하는 방법에 대해 공부해보았다. 💡 DP (Dynamic Programming) 동적 계획법 다이나믹 프로그래밍은 하나의 Problem이 두 개의 Sub Problem으로 나뉘고, 이러한 Sub Problem이 또 다른 Sub Problem으로 나뉜다고 할 때, 중복되는 Sub Problem이 존재하는 경우 효율적으로 문제를 해결할 수 있는 방법 중 하나이다. 처음 주어진 문제를 더 작은 문제들로 나눈 뒤 각 조각의 답을 계산하고, 이 답들로부터 원래 문제에 대한 답을 계산하는 방식. 쉽..

[Portfolio] Boss Raid 시작 시네마틱

https://youtu.be/smzpOcY6J4k 진행중인 작업 - 엔딩 시네마틱 마무리중 - 사운드 작업 - 잔버그 수정 진행 예정 작업 - 기술문서 작성 및 영상제작 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현 - 타겟팅을 이용한 공중 7콤보 공격 구현 - 검기 Trail, Particle 적용 - DualSword Slash Skill 구현 - Enemy의 Knock..

[UE4] Camera Top View 시점 변환 (ProjectionMode, Perspective/Orthographic, SetViewTargetWithBlend)

이전에 구현했던 Warp의 스킬로 원활한 순간이동 위치 지정을 위해 카메라의 TopView 시점 변환을 구현해보았다. ✨ SubAction_Warp 시점을 변경할 Camera Class인 ACameraActor를 저장해주었고, 카메라의 ProjectionMode 설정 값을 변수로 선언해주었다. Projection은 그래픽스 파이프라인 단계 중 Vertex Shader 단계에서 수행되는 투영변환 작업이다. Projection Mode의 종류로는 원근투영인 Perspective와, 직교투영인 Orthographic 가 있다. 자세한 설명은 아래 게시글에서 추가로 확인할 수 있다. 2023.02.04 - [🎮Unreal4/BluePrint] - [UE4] 좌표 공간 변환(Picking), 렌더링 파이프라인, ..

🎮Unreal4/C++ 2023.06.01

[UE4] Warp : 순간이동 (UDecalComponent, GetHitResultUnderCursorByChannel)

💻 BP_CAttachment_Warp 블루프린트 생성 Warp 기능을 구현하기 위해 무기 역할을 대체하는 BP_CAttachment_Warp를 생성하였다. BP_CAttachment_Warp 에는 Decal을 추가하여 플레이어가 순간이동 할 위치(지점)을 그려주었고, Warp 무기를 장착한 경우(On Begin Equip 호출)에만 Decal의 Visibility가 활성화되도록 설정하였다. 🖱️ 입력 키 추가 플레이어의 SetupPlayerInputComponent 함수에서는 Warp 무기를 장착하는 키(숫자 4)를 추가해주었다. 💻 CDoAction_Warp 클래스 핵심적인 Warp 기능을 구현하기 위한 DoAction_Warp 클래스를 생성해주었다. 순간이동 위치를 지정하는 UDecalCompone..

🎮Unreal4/C++ 2023.05.30

[백준/C++] 10757번 : 큰 수 A+B - unsigned long long을 넘는 자료형의 덧셈(string)

큰 수 A+B 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000) 출력 첫째 줄에 A+B를 출력한다. 예제 입력 1 9223372036854775807 9223372036854775808 예제 출력 1 18446744073709551615 해당 문제는 unsigned long long 자료형의 범위를 훨씬 뛰어넘는 큰 숫자들의 덧셈을 구현하는 문제이다. 그어떤 정수형 자료형으로도 범위를 나타낼 수 없으므로 string으로 숫자를 입력받은 뒤 각 자릿수의 덧셈을 순정으로 구현해주어야 이 문제를 해결할 수 있다. (너무 어려웠다..) #include #include #include #include #inc..

[백준/C++] 1193번 : 분수찾기 - 수학분류

분수찾기 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 예제 입력 1 1 예제 출력 1 1/1 예제 입력 2 2 예제 출력 2 1/2 예제 입력 3 3 예제 출력 3 2/1 예제 입..

[Portfolio] 스킬 Camera Moving

https://youtu.be/AUUrFc08zyY 진행중인 작업 - 맵 수정 (조명설정) - 시네마틱 진행 예정 작업 - 기술문서 작성 및 영상제작 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현 - 타겟팅을 이용한 공중 7콤보 공격 구현 - 검기 Trail, Particle 적용 - DualSword Slash Skill 구현 - Enemy의 KnockDown Hit 구현 ..

[UE4] Niagara 충돌처리 (FOnNiagaraSystemFinished)

💥 나이아가라 충돌처리 나이아가라의 충돌 처리는 두 가지 방식이 있다. 나이아가라 자체가 HitData를 갖는 방법과 SubAction에서 HitData를 전달해주는 방법이 있다. 그 중 나는 나이아가라(ACAura) 자체가 HitData를 갖는 방법으로 충돌처리를 구현하였다. 이전 학습 시간에는 나이아가라를 출력하기 위한 ACAura 클래스를 작성했었고, 해당 클래스안에 데미지 처리를 위한 FHitData와 DamageInterval, UBoxComponent를 선언해뒀었다. 나이아가라의 충돌은 BoxComponent의 Overlap을 이용하여 구현하였다. OnComponent Begin/End Overlap 함수에서는 충돌된 캐릭터를 Hitted 배열에 추가하거나 삭제해주었다. Hitted 배열은 지..

🎮Unreal4/C++ 2023.05.25

[UE4] Niagara Data Export (INiagaraParticleCallbackHandler, ReceiveParticleData, SystemParameter)

나이아가라의 Scale값을 가져와서 Box Component 위치를 조정하기 위한 Data Export 과정을 수행해보았다. 💻 INiagaraParticleCallbackHandler 나이아가라의 데이터를 사용하기 위해 INiagaraParticleCallbackHandler 를 추가 상속받아 주었다. INiagaraParticleCallbackHandler 인터페이스 안에는 ReceiveParticleData 함수가 존재한다. ReceiveParticleData 함수는 나이아가라 시뮬레이션 중에 입자 시스템에서 생성된 입자에 대한 데이터를 수신하는 데 사용된다. UFUNCTION의 속성값이 BlueprintNativeEvent 이므로 이를 상속받는 자식 클래스에서는 Implementation을 붙여 ..

🎮Unreal4/C++ 2023.05.25

[DX] Animation Read Clip

🎬 Animation의 Clip, Frame 정보 읽어오기 애니메이션에는 ModelBone과 ModelMesh가 존재한다. ModelMesh는 ModelBone을 참조하여 ModelBone의 위치를 가져와 애니메이션을 출력한다. 이때의 ModelBone은 애니메이션이 진행되는 시간에 따라 계속 변화하는데, 이러한 움직이는 정보를 Animation Clip에 저장한다. Animation Clip은 Bone별로 SRP 정보가 Matrix형태로 저장된다. 이때 ModelBone과 Animation Clip의 Bone정보를 일치시켜서, 해당 프레임에 따라 매칭되는 ModelBone을 움직여 애니메이션대로 출력해 주는 것이다. 이렇게 Keyframe단위로 저장되어있는 애니메이션을 Keyframe Animation..

🎨DirectX 2023.05.25

[Portfolio] 스킬 쿨타임 기능 구현

https://youtu.be/UDF06iEBRoE 진행중인 작업 - 맵 수정 (조명설정) - 보스 버그 수정.. - 카메라 애니메이션 진행 예정 작업 - 시네마틱 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현 - 타겟팅을 이용한 공중 7콤보 공격 구현 - 검기 Trail, Particle 적용 - DualSword Slash Skill 구현 - Enemy의 KnockDown..

[UE4] 나이아가라(Niagara) 출력하기 (UNiagaraComponent, UNiagaraSystem)

Hammer 무기의 스킬을 구현할 때 발사되는 나이아가라 이펙트를 출력하기 위한 기능을 구현해보았다. 🌈 나이아가라 애셋 수정 우선 출력하고싶은 나이아가라 애셋을 가져온 후, Initialize Particle의 색상을 변경시켜 커스텀하였다. ✨ Aura 클래스 나이아가라를 출력하기 위해 CAura 클래스를 생성하였다. 나이아가라에 충돌됐을 때 Hit 데미지를 입힐 수 있으니 HitData를 생성하였고, 충돌처리 간격 변수(DamageInterval)도 선언해주었다. 이후 클래스의 구조는 Root 아래 Niagara 컴포넌트와 Box Collision 컴포넌트를 추가하였다. Cpp 파일에선 각각의 컴포넌트를 초기화하고, 위에서 수정해놨던 나이아가라 시스템을 불러와서 저장해주었다. 🔨 SubAction_H..

🎮Unreal4/C++ 2023.05.24
728x90