[Unity] TIL 11 르탄이 카드 뒤집기 게임 만들기

qkrrlcks00·2024년 8월 28일

판정 시스템 만들기

public Card firstCard; 
public Card secondCard;

첫번째카드가 열렷을때 내 정보를 넘기고
두번째 카드가 열렷을때, 퍼스트카드에 데이터 유무를 확인하고 있다면 정보를 넘겨준다.

public static GameManager instance;

private void Awake()
{
    if (instance == null)
    {
        instance = this;
    }
}

card에서 퍼스트카드와 세컨드카드에 접근하기 위해 싱글톤을 만들고 instance에 this를 넣어준다

//퍼스트카드가 비었다면
if (GameManager.instance.firstCard == null)
{//퍼스트카드에 내 정보를 넘겨준다.
    GameManager.instance.firstCard = this;
}//퍼스트카드가 비어있지 않다면
else
{//세컨드 카드에 내 정보를 넘겨준다
    GameManager.instance.secondCard = this;
    //매치 함수를 호출해준다
    GameManager.instance.Matched();
}

조건문을 만들고

public void Matched() //매치가 됫는지 비교하는 함수
{
    if (firstCard.idx == secondCard.idx)
    {
        firstCard.DestroyCard();
        secondCard.DestroyCard();
    }
    else
    {
        firstCard.CloseCard();
        secondCard.CloseCard();
    }

firstCard 와 secondCard에 값을 비교한후, 값을 다시 빼준다.

firstCard = null;
secondCard = null;

카드 2장이 일치하면 파괴시키고 일치하지 않다면 다시 뒤집는다

void DestroyCardInvoke()
{
    Destroy(gameObject);
}
public void DestroyCard()
{
    Invoke("DestroyCardInvoke", 0.5f); 
}
public void CloseCard()
{
    Invoke("CloseCardInvoke", 0.5f);
}
void CloseCardInvoke()
{
    anim.SetBool("isOpen", false);
    front.SetActive(false);
    back.SetActive(true);
}

카드를 2장 선택하면 확인할 겨를도 없이 파괴되거나 틀려서 다시 뒤집혀서 Invoke딜레이를 줍니다.

그후 카드가 모두 파괴되엇을때 끝?re를 띄워주기위해

public int cardCount = 0;

cardoCount에 배열의 갯수만큼 넣어주면 되므로

GameManager.instance.cardCount = arr.Length;

동일한 카드를 맞추면 카운트를 -2 해주고 0이되면 게임이 끝나게 설정한다

cardCount -= 2;
        if(cardCount == 0)
        {
            Time.timeScale = 0.0f;
            endTxt.SetActive(true); 
        }

끝을 누르면 다시시작할수 있는 버튼을 만든다

SceneManager.LoadScene("MainScene");

숙제

  • 30초가 지나면 게임 끝내기
void Update()
{
    if (time > 30.0f)
    {
        Time.timeScale = 0.0f;
        endTxt.SetActive(true);
    }
}

Splash Image

Unity창에서 상단을 보면 Edit > Player > Splash Image >Logos 에서 로고를 넣으면 게임이 맨처음 시작될때 이미지들 몇개 나오는걸 구현할 수 있다. 맨처음 made with Unity는 유로버전을 구매해야 없앨 수 있다고 한다. 하지만 지금은 있는게 더 멋잇는거같다

사운드 추가하기

card에 add Component에서 Audio Source를 추가하고

AudioSource audioSource;
public AudioClip clip;
audioSource = GetComponent<AudioSource>();

카드가 매치 됬을때, 뒤집힐때 소리를 추가하는 코드를 작성

audioSource.PlayOneShot(clip);

MainScene 뿐만이라니라 시작화면에서부터 브금이 들릴수 있게
또, 만약 Audio가 켜져있는데 또 재생되어 2번 들리는걸 방지하기 위해 else destroy도 만들어준다.

public static AudioManager instance;
private void Awake()
{
    if (instance == null)
    {
        instance = this;
        DontDestroyOnLoad(gameObject);
        //씬을 이동해도 오디오매니저 오브젝트가 파괴되지 않음   
    }
    else //예외처리
    
    {
        Destroy(gameObject);
    }
}

런칭하기

  • 유니티 상단 File > Bulid Settings 를 보면 일단 MainScene만 Secnes in Build에 들어가있는데,
    Add Open Scenes를 눌러 현재보고있는 페이지 (StartScene)를 넣을수 있다.

  • 그 후 Platfrom을 Android로 바꾸어주고 좌측 하단에 Player Settings에 들어가서 Player보면 빌드에 관련된것들이 엄청 많은데,
    그중에 Resolution and Presentation에 들어가서
    핸드폰은 세로로 기니, Portrait를 켜주고 가로로 긴 Landscape Right,Left를 꺼준다.

  • Configuration > Scripting Backend에서 IL2CPP로바꿔주고 ARM64를 활성화한다

  • 그후 Package Name을 입력해준다

  • 마지막으로 맨아래에서 Publishing Settings > Keystore Manager > Create New > Anywhere 클릭하고 확인
    키스토어는 안드로이드에서 앱을 배포할수잇는 일종의 인증키라고 한다.
    Password를 입력하고
    alias도 입력해준다

  • 이번에는 Edit에서 Preferences > External Tools 에 Android부분이 모두 체크되어있는지 확인한다.

와.. 영어지옥

이제 다 되었으면 Build Settings에서 Build를 한다.

0개의 댓글