공부하기싫어
article thumbnail

오늘만 하면 완성이다.

ㅅㅂ 오래도 걸렸네

 

오늘은

리트씬을 만들어서 체력이 0이 되면 리트씬으로 전환을 하게 하고 r키를 누르면 main scene 을 다시 불러오도록 해보고

게임 첫 화면인 scene 을 만들어서 게임시작, 게임설명, 패치노트, 개발자정보 등을 보여주는 화면을 만들어 보고

게임 클리어 클리어 씬으로 전환하게 하고 역시 r키를 누르면 main scene 을 다시 불러오도록 하고

 

  • 리트씬

체력이 0이되면 리트 씬이 나오도록 하고 r키를 누르면 재시작 할 수 있게 만들어 보자

 

https://www.youtube.com/watch?v=BNPmyZGOWuk 

이분 영상을 참고했다.

 

어제 사용했던 restart 오브젝트를 gameManager 로 이름을 바꾸고

스크립트도 gameManager.cs 로 바꿔주고 여기다가 작업 할 예정이다.

 

 

작업 도중 이런 오류가 발생해서

폭탄?

폭탄이 터졌는데 아직 플레이어가 범위에 있으면 폭탄의 함수를 써야되는데 없어져서 접근이 안된다고 하는거같다

그래서 폭탄 범위에 들어가는 걸 check bool 을 써서 플레이어와 만나면 false 가 되게 해서 1회만 되게 했다.

void OnTriggerEnter2D(Collider2D other)
    {
        player controller = other.GetComponent<player>();
        bombname=this.gameObject.name;
       
        if (controller != null && check==true)
        {
            bomb.GetComponent<bomb>().onRange();
            bomb.GetComponent<bomb>().bombsGannaExp(bombname);
            check=false;
        }
    }

 

 

gameManager.cs 에

public void GameOver() {
        SceneManager.LoadScene("GameOver");
    }

를 추가해줬고

이제 씬을 꾸며보자

 

대충

만들었다.

3마에서 죽는 유튜버가 잘 없어서 내가 좋아하는 오소리님의 유튜브에서 캡쳐해왔다

ㅎㅎ

https://youtu.be/msl_K589fWA

^^7

 

gameover.cs 를 만들어서

gameover scene 의 캔버스에 넣어줬다.

public class GameOver : MonoBehaviour
{

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.R)) {
            SceneManager.LoadScene("mainScene");
        }
    }
}

 

잘 작동된다.

 

  • 첫화면

첫화면 역시 오소리님 유튜브 화면 캡쳐로 만들었다

^^7

그냥 저런상태로 놓으면 좀 없어보여서 깜빡이는 애니매이션도 넣어줘 봤다.

gamestart.cs 를 만들어서 캔버스에 넣어줬다.

public class GameStart : MonoBehaviour
{

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.G)) {
            SceneManager.LoadScene("mainScene");
        }
    }
}

 

  • 클리어 씬

이것도 오소리님 유튜브에서 캡쳐해왔다.

ㅅㅅ

마지막 포탈을 누를때 저주를 해제 했는지 아닌지를 판단하게 했다.

pointandpotal.cs

private void OnTriggerStay2D(Collider2D collision) {
        if (collision.CompareTag("Player") && Input.GetKey(KeyCode.G) && this.gameObject.name == "s2_potal") {
            if(player.GetComponent<player>().curse_count==0) {
                SceneManager.LoadScene("GameClear");
            } else {
                SceneManager.LoadScene("GameOver");
            }
        }
        else if(collision.CompareTag("Player") && Input.GetKey(KeyCode.G)) {
            StartCoroutine( TeleportRoutine() );
            //Debug.Log("keydown");
        }
    }

저주 해제 했을때는 클리어 씬으로 이동되고

저주 해제 실패 시에는 게임오버 씬으로 이동된다!

 

씬이 잘 넘어가는걸 확인했고 이제 여러 범위들을 투명 처리하고 디버그들을 주석처리해야겠다.

 

 

 

오늘은 여기까지!

내일은 w쿨타임 적용을 해보고

게임을 계속 돌려보면서 다른 버그가 있는지 확인해 본 후

빌드해보고 웹에 업로드까지 해봐야겠다!

후!

 

 

https://github.com/cyanindy/Unity/tree/main/3mario/Assets/Script

 

GitHub - cyanindy/Unity: game dev

game dev. Contribute to cyanindy/Unity development by creating an account on GitHub.

github.com

현재 제작중인 쿠크세이튼3마리오 프로젝트는 깃허브에 public 으로 업로드 되있습니다.