본문 바로가기
🌐 유니티 (Unity)

Day 6 - 게임 이펙트 코드 수정(위치 이동)

by shin0707 2024. 4. 20.
728x90
반응형

  • 주제

>> 이펙트 효과를 극대화하기

(코드 위치를 변경하여, 매칭 성공 카드 제거 직후 이펙트 실행)


  • 게임화면(전, 후)

수정 전(카드제거 전에, 이펙트가 먼저 비활성화)
수정 후(카드제거 직후 이펙트 활성화)


  • 코드 수정

1. 이전 코드

>>카드 매칭에 성공한 때, 이펙트 활성화

>>1초 후 카드 파괴

 

GameManager.cs

    public GameObject firstTracker; // 매칭된 카드 중 첫번째 카드 위에 생성될 이펙트
    public GameObject secondTracker;
 
    public void Matched()
    {
        if (firstCard.idx == secondCard.idx)
        {
            firstCard.DestroyCard();
            secondCard.DestroyCard();
            firstTracker.SetActive(true); //성공 이펙트 활성화
            secondTracker.SetActive(true); //성공 이펙트 활성화
        }

 

Card.cs

    public void DestroyCard()
    {
        Invoke("DestroyCardInvoke",1.0f); //1초후 실행
    }
 
    void DestroyCardInvoke()
    {
        Destroy(gameObject);
        GameManager.instance.Sname_Text.gameObject.SetActive(false);
    }

2. 수정 코드

>>GameManager.cs에서 Card.cs로 이펙트 변수를 받아와서, 카드가 파괴될 때 이펙트 활성화

>>0.5초 후 카드 파괴

(카드파괴와 이펙트 실행 타이밍을 맞추기 위해서, 파괴 대기시간을 줄임- 이펙트 자체 스피드를 고려)

 

GameManager.cs

    public GameObject firstTracker; // 매칭된 카드 중 첫번째 카드 위에 생성될 이펙트
    public GameObject secondTracker;
 
    public void Matched()
    {
        if (firstCard.idx == secondCard.idx)
        {
            firstCard.DestroyCard();
            secondCard.DestroyCard();
        }

 

Card.cs

    public void DestroyCard()
    {
        Invoke("DestroyCardInvoke",0.5f); //0.5초후 실행
    }

    void DestroyCardInvoke()
    {
        Destroy(gameObject);
        GameManager.instance.Sname_Text.gameObject.SetActive(false);
        GameManager.instance.firstTracker.SetActive(true); //성공 이펙트 활성화
        GameManager.instance.secondTracker.SetActive(true); //성공 이펙트 활성화
    }

 

728x90
반응형

loading