Profile

대혐수의 뒷동산

대혐수

[유니티] 주먹구구 탐정게임 페이드 인 아웃

나는 페이드인 페이드아웃의 매니아이다.

일전에 비주얼노벨 만들적에도 페이드인 페이드아웃 연출에 홀딱 빠져서 거의 남발하다시피 했었지.

JJ에이브럼스 하면 렌즈플레어가 떠오르듯이 나 대혐수 하면 페이드인 아웃을 떠올리면 될 것이다.

 

그래서, 아직 탐정게임의 시각연출에 대한 기획이 전혀 안 되어있는 상황임에도 불구하고,

페이드인/아웃 연출을 만들어놓기로 했다.

페이드인/아웃은 하이어라키 맨 위에 얹어지는 검은 이미지(이하 검은장막)의 알파값을 조절하는 방식으로 할 생각이다. 

나중에 상황봐서 하이어라키 조절은 할 수도 있겠지만.

 

 

일단, 어떤 이미지던간에 페이드인/아웃시킬 수 있는 메서드도 만든 다음

(참고로 이 코딩은 지난번에 만든 배경음악 페이드아웃 메서드를 응용해서 만들었다.)

페이드인/아웃은 자주 사용할 것이니만큼, 이를 편리하게 사용할 수 있게 하는 메서드도 만들었는데 이런 식이다.

 

*페이드인아웃메서드 : 페이드아웃시간, 페이드아웃한 채로 머무르는 시간,  페이드인 시간을 지정 -> 페이드인/아웃 메서드로 검은장막 페이드인(연출상으로는 화면 페이드아웃) -> 머무르는 시간만큼 지연 : Invoke메서드 사용 -> 페이드인/아웃 메서드로 검은장막 페이드아웃(연출상으로는 화면 페이드인)

 

이렇게 계획을 짜놨는데 망했다. 지연시간만큼 걸리기는 하는데 검은장막이 서서히 나타나고 서서히 사라지는 게 아니라, 확 나타났다가 확 꺼지는 것이다.

 

이거 해결하려고 하루를 꼴땅 날렸는데 문제가 뭐였냐고???

 

 

 

.......................하아......................

 

 

알파값이 0~1로 조절되게 해야 하는데 0~255로 조절되게 해서 그랬다 ㅠㅠ

아니 파레트에선 0~255로 되어있는데 왜 코딩에선 0~1이냐구....

당연히, 고쳤더니 제대로 작동한다 =_=

 

아래는 페이드인/아웃 메서드의 완성품

 

IEnumerator ColorFader(Image targetImg, float duration, bool fadeInOff) //이미지 페이드아웃. 마지막값에서 true=페이드인 false=페이드아웃
    {       
        float currentTime = 0;

        //페이드아웃을 기본으로 설정한다.
        float startA =1;
        float endA = 0;
        Color tempCol = targetImg.color; //타겟 이미지의 색정보를 입력

        if (fadeInOff) //페이드인모드라면 기본설정을 달리한다.
        {
            Debug.Log("페이드인모드이다.");
            startA = 0;
            endA = 1;
        }
        else Debug.Log("(테스트용) 페이드아웃모드이다.");           

        while (currentTime < duration)
        {
            currentTime += Time.deltaTime;            
            tempCol.a = Mathf.Lerp(startA, endA, currentTime / duration); //시간보간법으로 임시 색정보의 투명도 조정
            targetImg.color = tempCol; //타겟 이미지의 색정보를 투명도가 변경된 임시 색정보로 변경.
            yield return null;
        } 
        
     

        yield break;


    }

 

내가 게임코딩을 준 취미로 하니까 망정이지, 직장에서 이지랄 했으면.....

....아 선배님이 바로 알려주셨겠구나.

아니 내 성격상 혼자 끙끙 앓으며 시간 다 보내다가 병신취급당하고 야단맞고 그랬으려나?

 

아 아니다 그냥 취직을 못했겠지 내가 무슨 생각을...

 

 

※덧붙임 : 현재 페이드인아웃 연출이 적용된 건 장소를 이동할 때이다. 뿌듯한 마음으로 페이드인 아웃 시간을 조절해보는데, 페이드아웃이 다 되기도 전에 장소가 바뀌어버리는 사태가 발생하고 있었다. 그래서 페이드아웃이 먼저 발생하고 Invoke로 지연을 준 뒤 장소이동이 실행되도록 했는데, 이 과정에서 불필요한 요소를 제거하는 개선이 이루어졌다. 장소이동에 따른 페이드인 아웃 시간은 정말 마음에 들게 잘 조절했다. 너무 흡족하다. 해피.