[개발일지] 23. 도감 애니메이션 적용

2025. 1. 23. 20:35·유니티 프로젝트/점토게임

0. 들어가기 전에

이번엔 도감에 애니메이션 기능을 적용했다. 페이지를 넘길 때 동적인 효과를 주고 싶었기 때문이다.

 

 


 

 

1. 애니메이션&애니메이터

도감 애니메이션을 위해 애니메이션과 애니메이터를 만들었다.

 

1.1 BookController 애니메이터

도감을 위한 애니메이터이다.

더보기

1. 상태

애니메이터 상태는 다음과 같다. 처음에는 Idle 상태에 있다가 도감 페이지 넘기기 버튼을 누르면 애니메이션이 수행되도록 했다.

 

파라미터로 Trigger 타입을 2개 만들어서 사용했다. Any State 에서 왼쪽 버튼이 눌리면 isLeftClicked 를 set 해서 도감을 넘기는 애니메이션이 적용되도록 했다. 반대도 마찬가지이다.

 

1.2 BookLeftAnim, BookRightAnim 애니메이션

도감 애니메이션을 위해 2개의 애니메이션을 만들었다. 

더보기

1. BookLeftAnim

도감 왼쪽 버튼을 눌렀을 때 수행되는 애니메이션이다. Image 의 Sprite 를 이용해서 애니메이션을 만들었다.

 

기존에 찍어둔 도감 넘기기 애니메이션 Sprite 를 가져와서 넣었다.

 

 

2. BookRightAnim

도감 오른쪽 버튼을 눌렀을 때 수행되는 애니메이션. 위와 마찬가지로 Image 의 Sprite 를 이용해서 만들었다. 사진은 생략.

 

 


 

 

2. 스크립트

이번에 새로 만든 스크립트는 없고 BookController 를 수정했다.

 

2.1 BookController

더보기

1. 변수

다음과 같은 변수가 추가되었다. 

 

bookUIs 는 도감 애니메이션이 수행될 때 책 속 UI 요소들이 안 보이도록 하기 위해 필요하고 anim 은 도감의 애니메이션을 수행시키기 위해 필요하다.

public GameObject[] bookUIs; // 책 애니메이션 수행시 책 속 UI 잠시 활성화 꺼지도록..

[Header("Animation")]
public Animator anim;

 

 

2. UpPageIdx(), DownPageIdx()

메서드를 수정했다. 크게 달라진 부분은 없고 StartBookAnim 메서드를 수행하는 부분이 추가되었다.

public void UpPageIdx()
{
    if (pageIdx >= maxIdx - 1)
    {
        GameManager.instance.StartInfoPanel("마지막 페이지입니다.");
        return; // 빠져나가기..
    }
    pageIdx++;

    SetBookPanel();
    StartBookAnim("right"); // 책 애니메이션 수행..
}
public void DownPageIdx()
{
    if (pageIdx <= 0)
    {
        GameManager.instance.StartInfoPanel("처음 페이지입니다.");
        return; // 빠져나가기..
    }
    pageIdx--;
    
    SetBookPanel();
    StartBookAnim("left"); // 책 애니메이션 수행..
}

 

 

3. StartBookAnim(string op)

op 에 맞는 애니메이션을 실행시키는 메서드이다. 

 

애니메이션을 실행시켰으므로 도감 속 UI 를 안보이게 하기 위해서 활성화를 꺼줬다. 그리고 애니메이션이 수행되는 시간동안 기다리기 위해서 BookAnim 코루틴을 시작했다.

public void StartBookAnim(string op)
{
    // 애니메이션 실행
    if (op == "right")
        anim.SetTrigger("isRightClicked"); 
    else
        anim.SetTrigger("isLeftClicked");


    for (int i = 0; i < bookUIs.Length; i++)
        bookUIs[i].SetActive(false); // 책 속 UI 활성화 끄기..

    StartCoroutine(BookAnim());
}

 

 

 4. BookAnim()

코루틴이다. 도감 애니메이션의 총 길이가 0.35 라 임의로 target 의 값을 0.4 로 설정해줬다. 해당 시간에 도달하면 비활성화 시켰던 UI 를 다시 활성화하고 빠져나가도록 했다.

private IEnumerator BookAnim()
{
    float cur = 0;
    float target = 0.4f;

    while (cur < target)
    {
        cur += Time.deltaTime;
        yield return null; // 다음 까지 기다림.
    }

    for (int i = 0; i < bookUIs.Length; i++)
        bookUIs[i].SetActive(true); // 다시 활성화시키기ㅣ..
}

 

 


 

 

3. 결과물

 

 

 

 

'유니티 프로젝트/점토게임' 카테고리의 다른 글
  • [개발일지] 25. 야생 씬 기초 제작
  • [개발일지] 24. 월드 판넬 제작
  • [개발일지] 22. 데이터 로드 & 반영 로직 수정
  • [개발일지] 21. 점토 도감
dubu0721
dubu0721
dubu0721 님의 블로그 입니다.
  • dubu0721
    dubu0721 님의 블로그
    dubu0721
  • 전체
    오늘
    어제
    • 분류 전체보기 (343)
      • 프로그래밍언어론 정리 (5)
      • 컴퓨터네트워크 정리 (5)
      • 알고리즘&자료구조 공부 (64)
        • it 취업을 위한 알고리즘 문제풀이 입문 강의 (60)
        • 학교 알고리즘 수업 (3)
        • 실전프로젝트I (0)
      • 백준 문제 (196)
        • 이분탐색 (7)
        • 투포인트 (10)
        • 그래프 (7)
        • 그리디 (24)
        • DP (25)
        • BFS (18)
        • MST (7)
        • KMP (4)
        • Dijkstra (3)
        • Disjoints Set (4)
        • Bellman-Ford (2)
        • 시뮬레이션 (3)
        • 백트래킹 (15)
        • 위상정렬 (5)
        • 자료구조 (25)
        • 기하학 (1)
        • 정렬 (11)
        • 구현 (8)
        • 재귀 (8)
        • 수학 (8)
      • 유니티 공부 (11)
        • 레트로의 유니티 게임 프로그래밍 에센스 (11)
        • 유니티 스터디 자료 (0)
        • C# 공부 (0)
      • 유니티 프로젝트 (48)
        • 케이크게임 (13)
        • 점토게임 (35)
      • 언리얼 공부 (10)
        • 이득우의 언리얼 프로그래밍 (10)
      • 진로 (1)
      • 논문 읽기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    수학
    백트래킹
    C#
    BFS
    유니티
    골드메탈
    정렬
    그리디
    그래프
    우선순위큐
    자료구조
    스택
    티스토리챌린지
    맵
    dp
    백준
    유니티 공부 정리
    바킹독
    이분탐색
    시뮬레이션
    투포인터
    재귀
    해시
    오블완
    이득우
    이벤트 트리거
    언리얼
    큐
    유니티 프로젝트
    레트로의 유니티 프로그래밍
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dubu0721
[개발일지] 23. 도감 애니메이션 적용
상단으로

티스토리툴바