-
내일배움캠프 44일차 TIL - 유니티 심화 주차 개인 과제 2TIL/Unity 2024. 6. 18. 11:23
[한 줄 요약]
유니티 심화 주차 개인 과제를 진행하여, 선택 기능 일부 구현을 완료하였다.
[학습 내용]
유니티 심화 주차 개인 과제
선택 기능 구현
파티클 시스템
돌하르방을 클릭하였을 때 파티클이 발생하도록 설정해주었다.
사운드 이펙트
돌하르방을 클릭하였을 때 사운드 효과가 발생하도록 구현하였다.
private void Start() { GameManager.Instance.dolHarbang.GetComponent<ClickDolHarbang>().DolHarbangClickEvent += PlayStoneSound; } private void PlayStoneSound() { audioSource.PlayOneShot(stoneSound); }
애니메이션
돌하르방을 클릭하였을 때 애니메이션이 출력되도록 구현하였다.
!! 문제 발생 !!
* 내용
돌하르방을 클릭하였을 때 TapAnimation 애니메이션이 1회 출력된 뒤 Idle 상태로 돌아가게 하고자 하였다. 전이 조건을 트리거로 하여 Tap 트리거 발생 시 Idle→TapAnimation으로 전이하도록 구현하였다. 그런데 Idle로 돌아오지 않고 TapAnimation에서 멈추는 상황이 발생했다. 돌아오는 트랜지션에는 전이조건이 없어서 그런 것으로 보였다.
* 탐색
이를 해결하기 위해 TapAnimation에서 Exit로 나가는 트랜지션을 하나 만들었다.
그런데 결국 트랜지션을 다르게 만들어도 전이조건을 만들어주지 않으면 소용없다는 걸 깨달았다.
그래서 애니메이션이 끝났을 때 다시 트리거를 발생시켜서 다음 상태로 넘어가도록 설정해줄까도 고민하였다. 그렇게 하면 만들 수는 있을 거 같은데 되게 비효율적일 거 같다는 생각이 들었다. 그래서 다른 방법이 있나 구글에 검색해보았다.
애니메이션을 1회만 재생시키는 법을 검색했더니 대부분 Animation 루프 설정 해제에 관한 이야기만 있고, 내 상황과 비슷한 글이 없었다.
* 해결
결국 그냥 트랜지션과 트리거를 모두 없애고 코드에서 애니메이션을 직접 플레이하기로 하였다.
private void PlayTapAnimation() { animator.Play("TapAnimation", -1, 0f); }
이렇게 하면 TapAnimation에 갇히게 되는 거긴 하지만, 호출 때마다 다시 0초부터 재생하도록 하였기 때문에 지금 상황에서는 문제가 되지 않았다. 일단 문제는 해결했지만 근본적인 문제해결이 아닌 거 같기 때문에 이후 튜터님을 찾아가 질문을 해봐야겠다.
최종프로젝트 특강
프로젝트 시작
장르 선정
정확하고 구체적이게 정할 것
예) A게임 클론, 해상도는 FHD, 멀티플레이어, URP 등
레퍼런스 확보
국내/해외 시장 등에서 비슷한 류의 유명한 게임을 직접 플레이해보거나 자세히 찾아보는 것을 권장
그리고 그 사이에서 공통적인 부분을 정리하여 프로젝트에 반영 (시스템, 재미 요소 등)
중추 시스템 작업
필수라고 생각되는 시스템들을 기본 프레임워크로 제작
이후 완성된 프레임워크를 기반으로 세부 작업을 진행
눈에 보이는 기능부터 개발 X
추후 작업에서 프레임워크를 수정하지 말라는 뜻 X
프로젝트 진행
게임루프
게임이 시작되고 종료되기까지의 한 사이클을 최대한 빠르게 제작
간단한 방식으로 완성하고 패치하듯이 살을 붙여나가는 식으로 진행
포트폴리오
핵심
기획과 외관적인 것보다는 개발에 집중
개발자의 시각에서 고민해 볼 것
어떤 걸 구현하더라도 왜 그런 방식을 선택했고 어떤 이득을 산출해냈는지 고민
이력서 준비
이력서에 적을 게 많으려면 파트 분배 중요
중요한 파트는 남이 쓴 코드라도 자세히 파악할 것
그러기 위해서는 스크럼 때 많은 의견을 공유할 것
공부
유니티 공식문서
혼자서 공부할 때는 공식 문서 혹은 공식 블로그, 포럼 등을 찾아볼 것
셰이더 특강
렌더링 파이프라인
PBR (Physical Based Rendering, 물리 기반 렌더링)
빌트인(Built-In)보다 더 현실적인 그래픽을 보여준다.
- Roughness : 높을수록 매트한 느낌
- Metalic : 반사되는 정도
그림을 데이터로
하얀색을 표시하는 3가지 방법
- 255, 255, 255, 255
- FFFFFFF
- 1, 1, 1, 1
셰이더를 구성하는 기본 속성
- Base Color
- Normal
- Metalic
- Smoothness
- Emission
- Ambient Occlusion
노말 맵(Normal Map)
빛을 반사하는 정도를 나타낸다.
주로 파란색을 띠는 이유는 깊이를 표현하는 B(z)값이 -1 ~ 1의 값을 표현하기 위해 0 ~ 255의 중간값인 128에서 시작하기 때문이다.
[결과물]
[회고]
일단 시간에 늦지 않게 과제 제출은 가능해서 다행이나, 저장 기능을 구현해보지 못한 점이 아쉽다. 그래도 시간에 비교해서 괜찮게 만들어진 거 같다. 여유가 된다면 추가 기능을 덧붙여보고 싶다.
'TIL > Unity' 카테고리의 다른 글
내일배움캠프 46일차 TIL - 유니티 심화 주차 팀 프로젝트 2 (0) 2024.06.20 내일배움캠프 45일차 TIL - 유니티 심화 주차 팀 프로젝트 1 (0) 2024.06.19 내일배움캠프 43일차 TIL - 유니티 심화 주차 개인 과제 1 (0) 2024.06.17 내일배움캠프 42일차 TIL - 3D 게임 심화 개발 (0) 2024.06.14 내일배움캠프 41일차 TIL - 2D/3D 게임 심화 개발 (0) 2024.06.13