본문 바로가기
Unity

2024/04/04 Unity 미니 프로젝트 Roll-A-Ball 게임 만들기 5

by 민정e 2024. 4. 4.

앞선 내용들은 아래 링크를 누르면 볼 수 있다.

 

Roll A Ball 게임 만들기 1

Roll A Ball 게임 만들기2

Roll A Ball 게임 만들기3

Roll A Ball 게임 만들기4

다음 stage로 넘어가기 및 Retry 기능 만들기

stage 1이 완료가 되었다. next stage 버튼을 누르면 다음 stage로 넘어가도록 만들 것이다.

project창에서 Asset > 1. Scene 폴더로 들어간 후, 새로운 Scene을 만들어준다.

 

 

Hierarchy에 Create Empty를 해주고, 이름을 SceneManager로 설정 해 준다.

그 다음, SceneLoad 스크립트를 다음과 같이 수정 해준다.

 

스크립트를 방금 만든 SceneManager에 component로 넣어주고, NextStageNum을 1로 설정해준다.

그 이후 Win Panel의 NextStageButton으로 가서 OnClick() 항목에 +를 눌러준 후, 다음과 같이 설정해준다.

 

 

마지막으로 File > Build Settings에 들어가서 처음에 만들었던 새로운 Scene을 추가해준다.( build누르지 않기)

 

 

 

다음 Scene으로 성공적으로 넘어갔다.

이제 내 입맛대로 다음 스테이지를 추가로 만들어주면 된다.

 

굴러내려오는 기믹 만들기

이번엔 경사가 있는 스테이지를 만들어보았다. 하지만 이렇게만 하면 게임이 너무 쉬워질것같아 위에서 원통이 굴러내려와서 길을 방해하도록 만들어 보려고 한다.

 

Hierarchy에서 실린더를 생성한 후, 원하는 위치에 배치를 해준다.

실린더가 물리법칙을 따르도록 만들어 주어야 하기 때문에 실린더에 RigidBody컴포넌트를 추가해 주어야한다.

 

이러고 게임을 플레이 해보면 실린더가 잘 굴러내려오는것을 볼 수 있다. 그렇지만 이렇게 되면 이 기믹은 일회성으로 끝나게 되어버린다. 플레이어 오브젝트의 리스폰 기능과 유사하게 실린더에도 리스폰 기능을 추가해줄 것이다.

 

새로운 스크립트 GimmickController를 만들어 준 후, 다음과 같이 작성한다.

실린더가 처음 모양으로 리스폰 되게 해야하기 때문에, 실린더 3개를 하나의 부모에 넣어주고, 그 좌표를 new Vector3에 넣어주었다. 이제 게임을 플레이 하면 실린더가 잘 리스폰 될 것이다.

 

 

 

이렇게 했더니 리스폰은 잘 되는데 player에 맞아서 튕겨져 나갈때 세 실린더가 하나의 실린더인것처럼 튕겨져 나간다.

좀더 드라마틱하게 하기 위해, 실린더를 부모에서 따로 분리해주고, 각 실린더의 처음 위치를 기억한 후, 그 위치로 리스폰 되도록 코드를 바꾸어 주었다.

 

 

이제 만들어진 스크립트를 각각의 실린더에 적용을 해주면 의도했던대로 실행이 된다.

 

 

공이 너무 강해서 실린더가 힘을 못쓰기 때문에 실린더의 mass를 올려주면 조금 더 게임을 어렵게 만들 수 있다.