Create Empty로 빈 오브젝트를 만들고 다른 오브젝트들을 안에 넣어줍니다.
타일맵 & 팔레트로 스테이지를 그려줍니다.
깃발에 닿으면 현재 스테이지는 비활성화 되고, 다음 스테이지는 활성화 되는 방식입니다.
게임매니저에서 배열과 인덱스 번호를 사용해 컨트롤합니다.
public int stageIndex; stages 배열 인덱스로 사용
public GameObject[] stages; //스테이지 맵핑
public void nextStage()
{
if (stageIndex < 2) //스테이지가 1, 2일때 현재 스테이지 비활성화, 다음 스테이지 활성화
{
//Next Stage
stages[stageIndex].SetActive(false);
stageIndex++;
stages[stageIndex].SetActive(true);
playerRePosition();
totalPoint += stagePoint;
stagePoint = 0;
}
else { //스테이지가 3일때 화면 멈춤 & 게임 클리어!
Time.timeScale = 0;
Debug.Log("게임 클리어!");
}
}
플레이어 스크립트
public GameManager gm; //GameManager 맵핑
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Item")
{
/*
...
*/
}else if(collision.gameObject.tag == "Finish")
{
//Next Stage
gm.nextStage(); //gm의 함수 호출
}
}
UI 만들기
간단하게 라이프와 스테이지 넘버, 점수, Retry 버튼을 생성했습니다.
게임매니저 스크립트에서 불러오고 필요한 곳에 사용
using UnityEngine.UI; //UI사용시 불러와야함
using UnityEngine.SceneManagement; //Scene 관련 사용시 불러와야함
//UI
public Image [] uiHealth;
public Text uiPoint;
public Text uiStage;
public GameObject uiRestartBtn; //버튼은 GameObject 타입으로 선언
public void nextStage()
{
if (stageIndex < 2)
{
//Next Stage
stages[stageIndex].SetActive(false);
stageIndex++;
stages[stageIndex].SetActive(true);
playerRePosition();
uiStage.text = "STAGE " + (stageIndex + 1); //스테이지 넘버 갱신
totalPoint += stagePoint;
stagePoint = 0;
}
else { //3스테이지까지 클리어시 Retry버튼에 Clear 문구 출력
Time.timeScale = 0;
Text btnText = uiRestartBtn.GetComponentInChildren<Text>(); //Btn 오브텍트 안에 Text오브젝트가 있기때문에 InChildren 사용
btnText.text = "Clear!";
uiRestartBtn.SetActive(true);
}
}
public void restart() { //버튼에서 사용할 함수는 public으로 선언
Time.timeScale = 1;
SceneManager.LoadScene(0);
}
결과
'유니티 2D 기본(Platformer Game)' 카테고리의 다른 글
더블점프 구현 (0) | 2022.01.17 |
---|---|
10. 사운드 출력 (0) | 2021.12.04 |
8. 아이템 먹기 (0) | 2021.12.03 |
7. 몬스터 밟아서 잡기 (0) | 2021.12.03 |
6. 플레이어 피격 이벤트 구현 (0) | 2021.11.30 |