전체 글 403

[UE4] 권총(Pistol) 추가&애니메이션 제작(본마다 레이어로 블렌딩, 본 트랜스폼 변경)

👉🏻 Pistol 권총 앞서 구현했던 AR4 소총과 AK47 소총을 잘 완성시켜놨다면 권총을 무기로 추가하는 것은 매우 간단하고 반복적인 작업이다. Pistol 클래스를 생성한 뒤, AK47의 클래스를 대부분 복사해온 뒤, 몽타주나 에셋 레퍼런스, 총마다 다른 몇몇 설정 값들만 변경하면 쉽게 권총을 무기로 추가할 수 있다. (구조를 잘 짜놨기 때문에 가능한 부분이다) 🕺🏻 Pistol 애니메이션 권총을 구현할 때 가장 어려운 부분은 권총의 애니메이션을 구현하는 것이었다. 권총은 권총을 쥐고 조준하는 에임 오프셋이 따로 존재하지 않고, 단순 Idle 동작만 존재한다. Rifle Aim Offset Pistol Idle 따라서 소총의 에임 오프셋과 권총의 Idle 애니메이션을 블렌딩하여 권총의 Aim 애니메..

🎮Unreal4/C++_TPS 2023.03.21

[Portfolio] DualSword - Down Attack(KnockDown Attack)

https://youtu.be/tN462qoLB_c 진행중인 작업 - (문제점) 파티클 타이밍 조절 - Dash 구현중 - 지옥의 파티클 찾기 진행 예정 작업 - 플레이어 - 밑에서 위로 공격하는 공중콤보 구현 - 맵적용, IK, Parkour 진행 완료 작업 - 플레이어, 무기, 공격 애니메이션 에셋 찾기 - Dual Sword 이동 및 공격 애니메이션 적용 - Dual Sword Equip/Unequip 구현 - 기본 4콤보 공격 구현 - 공중 3콤보 공격 구현 - Dead 애니메이션 적용 (공중에서 Dead / 땅에서 Dead) - 공중콤보 Enemy 데미지 처리 - 방어, 방어해제, 반격(Parrying) 구현 - 타겟팅을 이용한 공중 7콤보 공격 구현 - 검기 Trail, Particle 적용 ..

[UE4] 1인칭 모드(FPS) - 애니메이션 리타겟팅, Hand IK 회전(Copy Target Rotation)

🦾 애니메이션 리타겟팅 3인칭 애니메이션인 Sprint를 1인칭 Arms의 Mesh에서도 실행시키고 싶다면 애니메이션 리타겟팅을 진행해야 한다. 먼저 사용하려는 애니메이션의 애님 애셋 리타깃->애님 에셋 복제후 리타깃을 선택한다. 이후 호환 스켈레톤만 표시를 누르면 모든 스켈레탈 메시가 리스트에 뜬다. 그럼 리타겟팅 하려는 Arms Mesh를 선택한 후 리타깃을 누르면 Arms 메시로 애니메이션이 수행된다. 이후 생성된 애니메이션을 보면 Arms 메시로 애니메이션이 수행되는 것을 볼 수 있는데, 이때 오른쪽 손목 부분의 메시가 이상하게 겹쳐져서 비정상적인 모습으로 출력되는것을 볼 수 있다. 어떤 메시는 그냥 리타겟팅만 해도 정상적으로 출력되고, 어떤 메시는 이렇게 잘못 출력될수도 있다. 이런 경우에는 스..

🎮Unreal4/C++_TPS 2023.03.17

[UE4] 1인칭 모드(FPS-AK47) : Arms Mesh, 3인칭↔1인칭 변환

👧🏻 1인칭 모드 - AK47 앞서 AR4 소총을 구현할때는 3인칭으로 Idle 모션과 Aim 모션을 구현하였다. 이번에는 AK47 소총 무기를 새롭게 추가하면서 소총에 조준경을 추가하여, Aim 상태에서는 조준경을 확대하여 보는 1인칭 시점을 구현해보았다. 1️⃣ 1인칭 캐릭터 Mesh 가져오기 먼저, 1인칭 모드를 구현하기 위해선 카메라를 캐릭터의 얼굴 위치에 놓고 양팔만 나오는 1인칭용 캐릭터 Mesh를 적용해야 한다. 나는 언리얼의 1인칭 블루프린트 피처를 다운받아 해당 에셋 안에 포함된 캐릭터 Mesh를 가져와 사용했다. 팔만 있는 SkeletalMesh와 Idle 애니메이션 두가지를 우선 가져와서 구현하였다. 2️⃣ Player 클래스에 Arms Mesh 추가하기 가져온 Arms Mesh를 P..

🎮Unreal4/C++_TPS 2023.03.17

[프로그래머스/C++] H-Index (정렬)

문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 입출력 예 citations ret..

[UE4] 재장전(Reload) - 탄창(Magazine) 교환(Reload, SpawnActorDeferred, Eject-Spawn-Load-End

💻 Magazine 클래스 탄창 객체를 생성하기 위해 CMagazine 클래스를 작성하였다. 탄창은 총알이 다 차있는 Full Mesh와, 총알이 없이 비어있는 Empty Mesh를 각각 생성하고, Empty Mesh위에 Full Mesh를 출력하였다. 재장전 할때는 Full Mesh의 Visibility를 비활성화하여 안보이도록 한 뒤 뒤에 있던 Empty Mesh를 바닥으로 떨어뜨리는 원리로 재장전 모션을 구현하였다. 💻 재장전(Reload) 노티파이 재장전의 Action 타입으로는 다 쓴 탄창을 떼어내는 Eject, 총알이 차있는 새로운 탄창을 가져오는 Spawn, 탄창을 총에 붙이는 Load, 재장전이 끝났음을 알리는 End 까지 총 4가지 단계로 나누었다. 노티파이가 실행될 때 노티파이에 설정한..

🎮Unreal4/C++_TPS 2023.03.16

[UE4] 총알 발사 (Shoot, ComponentHit)

앞서 만들어진 이쑤시개 같은 총알을 발사하는 기능을 구현해보았다. 🚩 Bullet 클래스 Bullet 클래스에 Projectile을 포함하여 만들어놓았기 때문에, Projectile을 이용하여 총알을 발사했다. InitialSpeed와 MaxSpeed를 설정하여 발사하는 가속도값을 설정할 수 있도록 했고 일직선으로 총알이 나가도록 Gravity를 0으로 설정하였다. Bullet의 Hit 충돌을 감지하여 총알이 어딘가에 Hit 됐을 때 Destroy 되도록 구현하였다. Begin Play에 총알의 Capsule Component에 있는 Component Hit에 Bullet::OnHit 함수를 이벤트 디스패처로 등록하였다. 또한 총알이 발사되는 Shoot 함수가 수행되면 Projectile의 Velocit..

🎮Unreal4/C++_TPS 2023.03.16

[UE4] 총알(Bullet) 제작(Material, Emissive, Specular, Metalic, Loughness)

총에서 발사되는 총알을 직접 만들어보았다. Bullet 클래스를 생성하여 Projectile을 가지고있는 총알을 만들었다. 이쑤시개 모양으로 Mesh를 조절한 뒤, 총알이 발사되는 느낌을 살리기 위해 빛나는 효과를 더하였다. 🎨 Material 생성 따라서 위와 같은 M_Bullet 머티리얼을 생성하였다. Specular는 정반사 광으로, 물체에 반사되는 색을 의미한다. Metalic은 금속처럼 보이게 하여 값을 올릴수록 금속성 광이 난다. Loughness는 거칠기를 나타내어 값을 올릴수록 광이 사라져 반사되지 않고 거친 느낌을 준다. Emissive는 외곽선에 빛을 내는듯한 효과를 줄 수 있다. 또한 Emissive는 SRGB라서 0부터 1까지의 값이 아니라 더 큰 값을 할당해도 된다. 만들어진 머티..

🎮Unreal4/C++_TPS 2023.03.16

[UE4] 조준점(CrossHair) 퍼뜨리기 (Alignment, WidgetTree, GetAllChildren, UWidgetLayoutLibrary, SlotAsCanvasSlot)

총을 연사할 때 총탄이 점점 퍼진다는 의미로 조준점이 사방으로 퍼뜨려지게 된다. 이러한 UI 기능을 구현해보자. ➕ CrossHair Widget 만들기 먼저, 위젯 블루프린트에 조준점(CrossHair)를 만들었다. 흰색 바탕을 기본으로 하는 Image 위젯을 Border 안에 배치한 뒤, Alignment 값을 조절하여 원점으로부터 상하좌우로 위치하도록 만들었다. 전체적인 화면으로 보면 화면 중앙에 조준점이 제대로 만들어진 걸 확인할 수 있다. 💡 조준점 퍼뜨리기 원리 조준점을 퍼뜨리기 위해 각 Top, Bottom, Right, Left로 칭해놓은 Border들의 Alignment를 조절하였다. 현재 원점으로부터 각각 0.5 또는 1.5만큼 X, Y좌표가 떨어져있는데, 조준점을 퍼뜨리려면 해당 길이..

🎮Unreal4/C++_TPS 2023.03.16

[Portfolio] DualSword Slash Skill

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

[프로그래머스/C++] 전화번호 목록 (vector<string> 문자열 정렬)

문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입출력 예제 ph..

[프로그래머스/C++] 위장 (조합?문제)

위장 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. cl..

728x90