ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내일배움캠프 44일차 TIL - 유니티 심화 주차 개인 과제 2
    TIL/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->Idle로 가는 트랜지션에 전이조건이 없어 작동하지 않는다.

    * 탐색

    이를 해결하기 위해 TapAnimation에서 Exit로 나가는 트랜지션을 하나 만들었다.

    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에서 시작하기 때문이다.

     

     


    [결과물]

    깃허브 링크

     

    파티클 효과
    애니메이션 효과


    [회고]

    일단 시간에 늦지 않게 과제 제출은 가능해서 다행이나, 저장 기능을 구현해보지 못한 점이 아쉽다. 그래도 시간에 비교해서 괜찮게 만들어진 거 같다. 여유가 된다면 추가 기능을 덧붙여보고 싶다.