프로젝트 일지/Unity

[Unity/TIL] 버그 수정 - 애니메이션 전환 조건, Invoke 하는 동안 상호작용 막기

톰마토 2025. 1. 23. 21:18
728x90

히든 스테이지에서만 카드가 뒤집혔다가 Idle로 안 돌아오는 버그 수정

현재 레벨이 3(= 히든 스테이지) 일 때도 anim.SetBool("isOpen", false); 를 실행해줘야 하는데 else문에 있어서 생긴 문제였다. 주의하도록 허자~ 

// Card.cs 
void CloseCardInvoke()
{
    anim.SetBool("isOpen", false); // 이 코드는 어떤 레벨이든 실행해야 한다.
    if (GameManager.Instance.CurLevel == 3)
    {
        front.GetComponent<Animator>().SetInteger("HiddenCard", -1);
    }

    front.SetActive(false);
    back.SetActive(true);
}

 

카드 여러개를 동시에 클릭가능한 버그 수정

두 개의 카드를 매치할 때 카드가 다시 덮이거나 사라지는 애니메이션이 끝날 때까지 다른 카드를 클릭하지 못하게 변경하기로 했다.

카드를 Destroy하거나 Close 할 때 애니메이션 재생을 위해 Invoke로 실행하기 때문에 클릭을 막는 타이밍을 잘 선정해야 한다.

  • GameManager에서 isAccessible 변수 가짐 : 접근 가능한 게임에서 발생하는 이벤트에 접근 가능한 상태인지를 나타내는 변수, default 값은 true
  • 카드가 매칭될 때 isAccessible 변수를 false로 변경
  • 카드가 사라지거나 Close 될 때 isAccessible 변수를 true로 변경
// Card.cs
public void DestroyCard()
{
    if (GameManager.Instance.CurLevel == 3)
    {
        GameManager.Instance.isAccessible = true;
        return; // 히든 스테이지에서는 카드 맞춰도 사라지지 않음 
    }
    Invoke("DestroyCardInvoke", 0.5f);
}

void DestroyCardInvoke()
{
    GameManager.Instance.CardList.Remove(this);
    AudioManager.Instance.SFXList.Remove(gameObject.GetComponent<AudioSource>());
    GameManager.Instance.isAccessible = true;
    Destroy(gameObject);
}

public void CloseCard()
{
    Invoke("CloseCardInvoke", 0.8f);
}

void CloseCardInvoke()
{
    GameManager.Instance.isAccessible = true;
    anim.SetBool("isOpen", false);
    if (GameManager.Instance.CurLevel == 3)
    {
        front.GetComponent<Animator>().SetInteger("HiddenCard", -1);
    }

    front.SetActive(false);
    back.SetActive(true);
}

 

영상 편집 입문(?)

휴대폰으로 장난스럽게 영상 편집 어플을 사용한 적 말고는 제대로 영상 편집을 해본 적이 없었다. 그래서 이번 기회로 영상 편집을 하게 되었다. 자막을 넣고 컷 편집을 하는 연습이 됐다. 무료 버전 filmora 프로그램을 사용했더니 영상 한가운데에 매우 큰 워터마크가 생긴다.... 

 

이제 내일이면 발표다!!!!!! 발표자는 사다리 타기로 정했고 다른 팀원분이 하게 되었다. 발표자료만 더 다듬으면 된다. 조금만 더 힘내면 된다!!! 파이팅 

728x90