ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 01. Hyo LappyBird
    앱 출시 연습/Hyo_lappybird

    안녕하세요!

     

    이 카테고리에서는 앱 출시 및 광고 부분을 목적으로

     

    모바일 플랫폼 환경에 대해 학습을 할 예정입니다.

     

     

    Unity환경에서 조금씩 제작만 해 보았지

     

    구글 플레이에 출시를 해본다고 생각을 못해 봤는데,

     

    우연히 필요 기능 구현 코드를 찾아보다가

     

    구글에 출시를 해보면 어떨까..? 하는 호기심이 생기게 되었습니다.

     

     

    현재는 심사? 를 기다리고 있으며

     

    약 7일 이내에 보편적으로 된다고 합니다.

     

    오늘(2022-06-20)

     

    두근두근...

     

    불안하기도 하고 기대되기도 하고 뭔가 감정이 미묘합니다.

     



    게임은 간단합니다.

     

    flappybird 게임을 모작 한 프로젝트로

     

    학습 영상 에서의 코드 외에 추가를 해볼 구현 동작들이 생각이 났지만

     

    앱 출시 및 +광고 기능을 사용해 보는 목적으로 

     

    보다 빨리 출시하고 싶은 마음이 앞섰습니다 ㅎㅎ..

     


    흠 그래도 우선 간단한 코드를 살펴보자면

    우선 플레이어의 점프 스크립트입니다.

     

    플레이어의 rigidBody의 velocity를 이용해서 터치/클릭 시 (마우스 왼쪽) 점프 동작을 구현해 주는 모습입니다.

     

    audioSource의 play가 아닌 PlayOnShot을 썼습니다.

    (소리가 중복이 가능합니다.)

    장애물인 기둥이 움직이는 코드입니다.

     

    Transform 컴포넌트를 이용해 이동을 해 주었으며

     

    Time.deltaTime을 곱해 주어 (1/Frame의 값) 프레임간 보간을 해 주었습니다.

     

    이번엔 기둥(장애물) 이 생성되는 코드입니다.

     

    생성할 프리 팹 pillar와 생성될 시간 time

     

    그리고 각 사운드 소리를 제어하기 위해 불 변수를 선언해 주었습니다.

    (뭔가 작성하고 보니깐 보다 간결하게 할 수 있을 것 같은데......)

    이어서 매 프레임마다 호출되는 Update함수에서

     

     timer에 +=연산자를 이용해 Time.deltaTime을 더해 주었습니다.

     

    1/fram의 값이기에 timer가 1이 된다면 1초가 지났다는 의미를 알려 줍니다.

     

    score가 5가 된다면 time의 시간을 줄여 주어 생성 주기가 짧게 되게 만들어 주었으며,

     

    text 활성화와 함께 동작됩니다.

     

    (각 score가 *5 마자 동작되게 구현을 해 주었습니다.)

     

    0이었던 timer가 Time.deltaTime을 더해 주어 지정된 시간 time보다 커지면

     

    Instantiate를 이용해 pillar(장애물)을 생성해 줍니다.

     

    또한 이 장애물의 위치를 제어해 주기 위해 GameObject로 받아 왔으며

    x축은 고정, y축은 Random.Range로 랜덤 값을 받아 왔습니다.

     

    생성이 되면 timer는 다시 0으로 초기화를 해주며 Destroy로 삭제를 해 줍니다.

     

    MakePillar 스크립트에서 score에 따른 조건을 걸어 주었는데

     

    이 스코어는 플레이어랑 충돌 시 score++ 올려 주는 코드입니다.

     

    Score를 즉시 불러올 수 있는 이유는 static으로 선언을 해 주었기 때문인데요

     

    static 한정자는 객체 단위가 아닌 클래스 단위로 생성, 사용되며

     

    정적 멤버를 선언하는 데 사용된다고 합니다.

     

    즉 Score는 여러 단위가 아닌 전체 프로젝트 중 하나이기에 Static으로 선언해 주어

     

    총관리를 해 주었습니다.

     

    실질적인 총 Score관리를 하는 Score스크립트입니다.

     

    현재 Score와 bestScore를 static 한정자로 관리를 해 주었으며

     

    초기에 현재 스코어 (Score)는 0으로 시작됩니다.

     

    Update문에서는 score_Text를 score의 값으로 지정되게 해 주었으며

     

    int값인 score를 ToString으로 (문자열)로 변환하여 text에 대입 되게 해 주는 코드입니다.

     

    반대로 기둥과 기둥 사이의 콜라이더가 아닌

     

    타 콜라이더에 충돌했을 시 실행되는 코드입니다.

     

    LoadScene를 이용해 "GameOver" 씬으로 전환되게 해 주었으며

     

    최고 기록인 bestScore를 알려주기 위하여 

     

    현재 점수보다 BestScore가 높으면 BestScore는 현재 Score가 되는 코드입니다.

    GameOver 씬입니다.

     

    Restart Btn을 클릭하면 OnClickEvent에서 호출될 

     

    RestartGame 함수입니다.

     

    간단히 LoadScene를 이용해 MainScene로 이동하는 코드입니다.

     

    00 : 40초

    구글 출시 검사를 기다리는 중인데.

     

    이 단계까지 진행하면서 알게 된 점들과

     

    막혔던 부분 등.. 을 추가적으로 첨부를 해 보겠습니다.

    (제가 기억하기 위해서)

     

    (뭔가 앱을 출시해 보는 것에 대하여 생각을 아예 안해본건 아니지만...

    초라한? 역량이 낮은? 경험이 부족한?

    뭐 말할수록 자존감 깎는것 같은데ㅋㅋ 그만큼 보다 손쉽게?

    학습을 통해 약 30분 이내로 검토하는 과정까지 갈 수 있다니.. 정말 새로운 세상에 사는것 같습니다 허허..)

    (앞으로 좀 더 다양한 게임을 만들어 보고 싶은 마음 뿐이네요)

     

    이 글에서 추가적으로 검토전 (새로 알게 된 점들과 어려웠던 부분)과 검토 후 과정을 추가하여 글을 올리겠습니다.

    (검토 받기 전에도 오류가 많이 났었다만,,

    검토가 끝나도 뭔가 안될것 같은데.. 

    앱을 다운받으면 플레이가 안된다던가..

    검토에서 안된다던가...

    으흠...)

    (작성 중)

    댓글

김효겸 / Tel. 010-7735-0580 / E-mail. dollzzang2@hanmail.net