전체 글 403

[프로그래머스/C++] 큰 수 만들기 - 탐욕법(Greedy)

큰 수 만들기 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 2자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예 number k return "1924"..

[DX] 3D Model Render -1

💻 Model 클래스 작성 이전학습을 통해 3D Model의 정보들을 읽고, 저장할 수 있는 기능을 구현해보았다. 이번에는 이러한 Model 파일을 읽고 그대로 화면에 그려보았다. 현재 3D 파일을 읽어와 Model 클래스를 만들어놨고, 이러한 Model의 정보인 Model Bone과 Model Mesh 클래스를 각각 제작할 것이다. Model Mesh에는 정점같은 Drawing 정보를 가지고, Model Bone에는 말 그대로 Bone 정보를 가진다. 렌더링을 관리하기 위한 Model Render 클래스도 제작하여 Mesh의 Drawing 을 구현할 것이다. 이때, 쉐이더에는 Bone 배열 전체가 들어가는 CBuffer를 하나 만들고, Mesh가 주체가 되므로, 해당 Mesh가 참조하고있는 Bone I..

🎨DirectX 2023.04.25

[UE4] Fixed Camera (내적 dot, FindLookAtRotation)

블루프린트로 구현했었던, 공격하는 타겟에게 카메라를 고정시키는 Fixed Camera 기능을 C++ 클래스로 구현해보았다. 블루프린트로 구현했던 내용: 2023.02.03 - [Unreal4/BluePrint] - [UE4] 콜리전 중복 충돌 문제, 공격 중 전방의 Target에게 카메라 고정/회전, 가장 전방에 있는 액터 찾기 함수 작성 🎥 FixedCamera Fixed Camera 기능은 무기의 Collision을 검사할 때 호출되어 사용하였다. 해당 기능의 핵심은 아래와 같다. 1. 내적을 이용하여 플레이어의 Forward 방향에 가장 근접한 Enemy 찾기 2. 플레이어의 Controller를 이용하여 카메라 회전하기 이때 내적 값이 클수록 내적하는 두 방향벡터가 겹쳐져있는 것이기 때문에 내적값..

🎮Unreal4/C++ 2023.04.24

[Portfolio] EnemyAI - Boss 추가

https://youtu.be/BWPn7gEKH_k 진행중인 작업 - Boss AI 스킬 추가 진행 예정 작업 - 맵적용, IK, Parkour 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현 - 타겟팅을 이용한 공중 7콤보 공격 구현 - 검기 Trail, Particle 적용 - DualSword Slash Skill 구현 - Enemy의 KnockDown Hit 구현 - H..

[Portfolio] EnemyAI - 원거리 몬스터 추가 (Archer)

https://youtu.be/rvMKJXNpfqY 진행중인 작업 - Enemy AI 장거리 몬스터 마무리 작업 - Boss AI 작업 진행 예정 작업 - 맵적용, IK, Parkour 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현 - 타겟팅을 이용한 공중 7콤보 공격 구현 - 검기 Trail, Particle 적용 - DualSword Slash Skill 구현 - Enem..

[Portfolio] EnemyAI - 근거리 몬스터 완성 (Zombie)

https://youtu.be/UJyamhRPhBM 진행중인 작업 - Enemy AI 장거리 몬스터 작업 진행 예정 작업 - 맵적용, IK, Parkour - 몬스터 AI (보스) 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현 - 타겟팅을 이용한 공중 7콤보 공격 구현 - 검기 Trail, Particle 적용 - DualSword Slash Skill 구현 - Enemy의 ..

[Portfolio] EnemyAI - 근거리 몬스터 추가 (Zombie)

https://youtu.be/zi85BImodC4 진행중인 작업 - Enemy AI 근거리 몬스터 구현중 진행 예정 작업 - 맵적용, IK, Parkour - 몬스터 AI (보스) 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현 - 타겟팅을 이용한 공중 7콤보 공격 구현 - 검기 Trail, Particle 적용 - DualSword Slash Skill 구현 - Enemy의..

[UE4] Hit Sound, Effect (USoundWave, SpawnSoundAtLocation , UFXSystemAsset, UParticleSystem, UNiagaraSystem)

Hit 시에 Sound가 출력되고, Effect가 나타나도록 추가적인 Hit 기능들을 구현하였다. 🔊 Hit Sound Sound 기능은 WeaponStructures 클래스의 HitData 구조체에서 구현하였다. USoundWave 객체로 Sound를 받고, UGameplayStatics 클래스의 SpawnSoundAtLocation 함수를 통해 사운드를 출력하였다. 이후, DataAsset 객체인 DA_OneHand에 생성되어있는 Sound 속성에 출력하고자하는 오디오 파일을 넣어주었다. 🪄 Hit / Attack Effect Effect는 Particle과 Niagara 둘 다 사용될 수 있기 때문에 매개변수로 받아온 UFXSystemAsset* Effect 객체가 파티클인지, 나이아가라인지 확인하..

🎮Unreal4/C++ 2023.04.21

[CS] 암시적 멤버 메서드 6가지 (기본생성자, 기본소멸자, 복사생성자, 이동생성자, 복사대입연산자, 이동대입연산자)

1. 기본생성자 2. 기본소멸자 3. 복사생성자 4. 이동생성자 5. 복사대입연산자 6. 이동대입연산자 🔷 기본 생성자 (=디폴트 생성자, Default Constructor) 원형 Book::Book() { } 기본 생성자는 객체가 생성될 때 사용자가 초깃값을 명시하지 않으면, 컴파일러가 자동으로 제공하는 생성자이다. 즉, 클래스에 생성자가 단 하나도 정의되지 않았을 때만, 컴파일러에 의해 자동으로 제공된다. 만약, 사용자가 생성자를 단 하나라도 정의했다면 위와 같은 객체의 선언은 오류를 발생시킨다. 기본 생성자는 사용자로부터 인수를 전달받지 않으므로, 매개변수를 가지지 않는다. 🔷 기본 소멸자 (Default Destructor) 원형 ~Book() { } 객체의 수명이 끝나면 생성자의 반대 역할을 ..

[UE4] Hit Color, Hit Stop (HitData, TakeDamage, FDamageEvent, SetTimer, FTimerHandle. IsNearlyZero, CustomTimeDilation)

🔥 Hit 처리 이전에는 플레이어가 공격했을 때 Sword의 콜리전에 Enemy가 충돌되어 OnComponentBeginOverlap 함수를 호출시키는 과정까지 구현하였다. 이번에는 Enemy가 Hit 됐을때의 기능들을 하나씩 구현해보았다. 🔎 HitData 구조체 생성 HitData는 WeaponStructures 클래스에 생성하였다. (WeaponStructure는 공격에 필요한 구조체, 함수를 모아둔 UObject Class) Hit 됐을때 출력될 몽타주와 데미지 수치(Power), 밀려나는 정도(Launch), Stop 모션을 구현할 시간(StopTime), Sound, Effect 등이 있다. 추가로 WeaponStructures 클래스에서 데미지를 전달하는 SendDamage 함수와 PlayM..

🎮Unreal4/C++ 2023.04.20

[UE4] Overlap 충돌 처리 (Attachment 델리게이트)

🗡️ 공격 시 충돌 처리 플레이어의 공격기능을 구현했으므로, 이러한 공격에 데미지를 입을 수 있는 충돌처리를 구현하였다. 충돌은 무기에 Collider를 추가한 뒤, Overlap Collision을 이용하였다. 🔻 제어할 Collision 객체 저장 무기의 Collider는 무기별로 가지는 종류와 개수가 모두 다르기때문에 어느 한 곳에서 관리하기 위해선 Attachment에서 관리하며 된다. 따라서 Attachment에 현재 무기가 가지고있는 모든 Collider를 저장할 TArray Collisions; 를 선언해주었고, BeginPlay 호출 시 자식의 Collider를 불러와 추가해주었다. 이때, Box, Sphere, Capsule Collision 컴포넌트는 ShapeComponent라는 하나..

🎮Unreal4/C++ 2023.04.19

[프로그래머스/C++] 디스크 컨트롤러 - 힙(Heap), SJF

디스크 컨트롤러 문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다. 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 작업을 요청받은 순서대로 처리하면 다음과 같이 처리 됩니다. - A: 3ms 시점에 작업 완료 (요청에서 종료까지 : 3ms) - B: 1ms부터 대기하다가, 3ms 시점에 작업을 시작해서 12ms 시점에 작업 완료(요청에서 ..

728x90