본문 바로가기
개발일지/게임개발

[유니티 게임 개발] 동방을 걷다 프로젝트 14 - 레이무 상애 엔딩 2024 05 30(AM 01:30)

by 라이티아 2024. 5. 30.

현재 듣고있는 곡

사랑색 마스터 스파크 - 마리사 메인곡

 

 

 

 

대충 게임이 틀이 잡혀가니 엔딩도 하나쯤 만들어야 할 것 같아서 레이무와 호감도를 MAX까지 쌓으면 엔딩을 볼 수 있게 만들려 한다

 

대충 매커니즘이

 

1. 레이무 호감도 MAX달성

2. 상점에서 결혼반지 구입

3. 레이무에게 선물하기

4. 엔딩씬

 

이런 구조로 만들려 한다

 

public class view_like : MonoBehaviour
{
    public TextMeshProUGUI text;
    // Start is called before the first frame update
    void Start()
    {
        text.GetComponent<TextMeshProUGUI>();
    }

    // Update is called once per frame
    void Update()
    {
        text.text = NPCManager.Instance.like.ToString();
    }
}

일단 호감도를 보여주는 텍스트 부터 수정해주자

 

void Update()
    {
        if(NPCManager.Instance.like < MAX_LIKE)
            text.text = NPCManager.Instance.like.ToString();
        else
            text.text = "MAX";
    }

호감도 MAX시 MAX로 표시되게 바꾸어 준다

이제 호감도가 MAX일시 영문으로 표기된다

 

 

이제 호감도가 MAX가 될시 상단에

"상점에 재고가 들어왔습니다!"

라는 문구가 뜨게 만들어 보자

 

이런 알림이 뜨게 만들 계획이다

 

public RectTransform rect;
    void Start()
    {
        rect = GetComponent<RectTransform>();
    }

rect를 사용해야 하니 컴포넌트를 가져온뒤

 

Vector2 currentPos = rect.anchoredPosition;

            if (currentPos.y > 110)
            {
                currentPos.y -= speed;
                rect.anchoredPosition = currentPos;
            }

요런 식으로 움직여주면 된다

 

IEnumerator Move()
    {
        isMoving = true;
        bool movingDown = true;

        while (true)
        {
            Vector2 currentPos = rect.anchoredPosition;

            if (movingDown)
            {
                if (currentPos.x > 110)
                {
                    currentPos.x -= speed;
                    rect.anchoredPosition = currentPos;
                    yield return null;
                }
                else
                {
                    yield return new WaitForSeconds(2f);
                    movingDown = false;
                }
            }
            else
            {
                if (currentPos.x < 850)
                {
                    currentPos.x += speed;
                    rect.anchoredPosition = currentPos;
                    yield return null;
                }
                else
                {
                    yield return new WaitForSeconds(2f);
                    movingDown = true;
                }
            }
        }
    }

이런 코루틴 함수를 만들고 이 함수를 호출하면 게임에 안내 메세지가 나오는 형태이다

 

이렇게 안내 메세지를 보여준다

 

 

이제 호감도를 표시하는 오브젝트에

void Update()
    {
        if(NPCManager.Instance.like < MAX_LIKE)
            text.text = NPCManager.Instance.like.ToString();
        else{
            if(!is_like_max){
                notice.NoticeLikeMax();
                is_like_max = true;
            }
            text.fontSize = 40;
            text.text = "MAX";
        }
    }

이렇게 호감도가 MAX면 호출하여 사용자에게 엔딩 아이템이 상점에 나왔음을 알려준다

 

이렇게 안내가 나온다

 

 

 

이제 상점에 엔딩 아이템 "반지"추가와, 레이무 반지 선물 이벤트 추가, 엔딩 씬 제작이 남았다