- Today
- Total
프로그래밍 농장
유데미 스타터스 유니티 1기 취업 부트캠프 - 12주차 학습 일지 본문
이번주는 저번주에 이어서 직접 제작한 MagicaVoxel을 활용하여 구현한 다양한 오브젝트들을 기반으로 한 미니프로젝트를 직접 구현하는 과정을 학습하였다.
추가적으로 저번주에 이어서 진행중인 Death Parkour 개인프로젝트를 진행하여서, 이를 같이 포스팅하도록 하겠다!
- MagicaVoxel Project
수업과정에서 참고한 복셀프로젝트이다. 위와 같이 기본적으로 다양한 복셀 오브젝트들을 기반으로 한 Map을 생성하고, 이들과의 상호작용 기능을 구현하였다.
특정 건물에 들어가게되면, Scene전환과 함께 플레이어의 속성이 그대로 넘어가서 활용이 가능한 기능도 구현하였다.
건물 내에서는 특정퀘스트를 수행할수있도록 간단한 NPC상호작용과 팝업시스템을 구현하였다.
+ 복셀을 export하여 유니티 오브젝트로서 사용하려할때, 아래와 같이 피벗이 맞지않는 현상이 발생하였다.
해결방안은 MagicaVoxel에서 굵은 실선 0,0을 기준으로 오브젝트를 잡고 export해 주어야 해당점을 기준으로 오브젝트의 중심피벗이 잡힌다는것을 깨달았다.
아래는 magicavoxel로 구현한 다양한 오브젝트들이다. (다음주에 최종본과 함께 공개하겠다..)
- Death Parkour
1주일째 간간히 진행중인 개인 프로젝트이다. 기존 수업간의 학습내용을 반영하여 작업하고 있으며, 작업일지와 현황은 아래와 같다.
이번주는 프로젝트 전반의 데미지 처리에 대한 수정이 필요하다고 느끼게 되어, 인터페이스를 통한 피격 및 회복 기능으로 개편하도록하였다. 아직 진행중인 상황이라 다음주쯤 완성되면 다시 코드와 함께 포스팅할수있을것 같다.
개발 노트 ( 진행사항 )
08/30 (화) | 개발시작 Map / Turret / Player Asset 다운 플레이어 이동구현 터렛 범위 내 접근시 조준 및 발사 기능구현 ( Raycast ) -> |
08/31 (수) | 플레이어 파쿠르 구현 - 더블점프 -> -> |
09/01 (목) | 플레이어 파쿠르 구현 - 백플립 / 매달리기 -> |
09/02 (금) | UI Canvas 개편 플레이어 HP / MP 추가 & 파쿠르별 소모 MP Table 구체화 플레이어 피격시 카메라 진동 추가 : 현재 프로젝트의 Camera 구조는 Cinematic + Cinematic Virtual이 PlayerFollowCam에 붙어있음으로, 진동을 수행할 함수에서 Player의 자식오브젝트인 PlayerFollowCam의 localposition으로 접근하여 잡아주어야한다. 터렛 범위 내 접근시 조준 및 발사 기능 보완 ( Raycast ) : 기존 Aim <-> 현재의 Position을 비교하는 방식에서 처음 Aim후 해당 Position반경을 잡은후, 발사시 잡힌 Raycast가 그 안에 있을시 피격 처리하도록 구현 -> |
09/03 (토) | PlayerFaceCam 추가 : 플레이어의 실시간 FaceCam 및 상태별 표정모션 노출 -> 피격UI 추가 : 1. UI Canvas에 피격 Sprite 하나 추가후 코루틴으로 피격시마다 알파값 조절. / 2. Vignette.Intensity에 접근하여 코루틴으로 빨개졋다 서서히 원상태로 돌아오는 방식. 총 두가지 방식을 생각하였으며, 조사결과 상황에 맞는 다양한 피격 UI를 사용하고자 한다면 Sprite로 조절하는것이 맞고 그런것이 아니라면 Vignette로 접근하여도 괜찮다고 하여 UI를 사용. 파쿠르 Animator 추가 및 수정 Turret 레이캐스트 피격 방식 개편 ( Position targeting -> raycast Aim / Fire 찍힌 distance 로 판단 ) |
09/05 (월) |
PlayerFaceCam 수정 및 보완 완료 : RawImage 마스킹으로 잘라서 넣어줌 피격시 UI Canvas 상 피격화면 표시 추가 : 피격 UI Canvas에 발라주고 코루틴으로 알파값 서서히 감소하도록 구현 |
09/06 (화) |
플레이어 HP 에 따른 애니메이션 및 효과 적용 애니메이션 구조 개편 (+추가) IDamageble 인터페이스 구현을 통한 Damage 처리방식 개편 JumpAttack 애니메이션 안됌 -> error : !Grounded 이며 R을 누를시 onAir 에서 JumpAttack 애니메이션을 수행해야하는데 넘어가지않음 -> 우선순위의 문제같기도 .. 혹은 Input초기화 |
* 위 게임과 같은 Damageble 게임 구현시, 가장 1차원적인 방법이 해당 오브젝트의 tag를 확인하여 Damage 처리하는 방식이다. 그렇기에 금일작업에 IDamageble 인터페이스를 통한 구현을 진행하였다.
* Enemy의 스캔 및 접근에 대한 구현방식은 유니티에서 제공하는 간단한 AI 방식인 Navigation을 사용하여 구현할 예정이다.
Navigation
유니티는 한위치에서 다른위치로서의 거리를 자동으로 계산하고, 실시간으로 장애물을 피하며 이동하는 위의 네가지 네비게이션을 제공한다.
유니티 애니메이션 우선순위 관련 문제 해결 : 아래의 Animator상의 OnAir에서 플레이어 오브젝트가 수행할 애니메이션은 기본적으로 JumpLand 이지만, R이 입력되면 JumpAttack이 수행되어야한다. 하지만 R을 점프할때 눌러도 JumpAttack을 수행하지 않는 문제가 발생하였다. 이는 아래와 같이 애니메이션을 수행할 우선순위를 잡아주니 정상적으로 해결되었다.
Enemy가 이동가능한 반경을 Bake한 모습
개인프로젝트를 진행하면서 느끼는 점은,단순히 기능구현도 좋지만 구조적으로 유지보수가 편하고 에러가 발생할 확률을 줄여주며 누구나 쉽게 이해할수있고 간략한 코드가 제일 잘 짜여진 코드라고 생각하였다.
앞으로도 위와 같은 코드를 짜서 프로젝트에 직접 대입해 좋은 결과물을 최종적으로 얻었으면 좋겠다.
유데미코리아 바로가기 : https://bit.ly/3b8JGeD
본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.
#유데미, #유데미부트캠프, #취업부트캠프, #개발자부트캠프, #IT부트캠프, #부트캠프후기
'STARTERS' 카테고리의 다른 글
유데미 스타터스 유니티 1기 취업 부트캠프 - 13주차 학습 일지 (0) | 2022.09.18 |
---|---|
Starter Asset 스터디 정리 포스팅 [ 전처리기 지시어 (Preprocessor Directive) ] (0) | 2022.09.16 |
유데미 스타터스 유니티 1기 취업 부트캠프 - 11주차 학습 일지 (0) | 2022.09.04 |
유데미 스타터스 유니티 1기 취업 부트캠프 - 10주차 학습 일지 (0) | 2022.08.28 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 9주차 학습 일지 (0) | 2022.08.21 |