Unity 내일배움캠프 TIL 0908 | Skybox

cheeseonrose·2023년 9월 8일
1

Unity 내일배움캠프

목록 보기
30/89
post-thumbnail

두둥 팀 프로젝트 발제날
주제는 고전 게임 만들어보기!

똥 피하기, 닷지, 벽돌 깨기 중에 하나를 골라서 구현하는 것이 과제다

어제 잠 안 와서 주제 예상하고 스토리까지 박박 짰는데
쓸모없을 무
머 언젠간 이 아이디어도 살리는 때가 오겄지.. 아쉬운거지ㅣ....

팀 프로젝트

Stage Class 로직

  • Stage.Update
    • Stage에서는 _meteorController의 하위 오브젝트 개수가 0이 되면 스테이지 클리어로 판단하고 GameOver 함수를 호출한다
    • _isOver는 GameManager의 함수 호출에 의해 변하는 bool 변수인데, true가 되면 스테이지가 실패한 것이다.
    • TODO
      • 시간 제한 기능을 넣는다면 시간이 끝났을 때 스테이지 실패
      • 패들에 체력을 넣어준다면 패들 체력이 0 이하일 때 스테이지 실패
void Update()
{
	// TODO MeteorController 완성 시 주석 풀기
    //if (_meteorController.transform.childCount == 0)
    //{
    //    GameOver(true);
  	//}
    if (_isOver)
    {
    	GameOver(false);
    }
}
  • Stage.GameOver
    • 매개변수로 bool 값을 받아와서 true이면 스테이지 성공, false이면 실패일 때의 로직을 실행한다.
    • 지금은 시간을 멈추고 Text를 보여주는 기능만 있음
// isClear == true 이면 스테이지 클리어, false 이면 실패
private void GameOver(bool isClear)
{
	Time.timeScale = 0f;
    
    if (isClear)
    {
    	_gameOverText.GetComponent<TMP_Text>().text = STAGE_CLEAR;
    } else
    {
    	_gameOverText.GetComponent<TMP_Text>().text = STAGE_FAIL;
    }
    
    _gameOverText.SetActive(true);
}
  • Stage.SetStageInfo
    • GameManager에서 Stage 생성에 필요한 meteorPrefab의 이름과 게임 배경 이미지 리소스 이름을 넘겨주기 위한 함수이다.
    • MonoBehaviour를 상속받는 클래스는 new 키워드로 생성해줄 수 없다고 한다.
      그래서 public 함수로 값을 설정해주는 방식으로 했다.
// GameManager에서 호출하여 Stage 정보 설정
public void SetStageInfo(string meteorPrefabName, string backgroundImage)
{
	_meteorPrefabName = meteorPrefabName;
    _backgroundImage = backgroundImage;
}
  • Stage.StageFail
    • GameManager에서 스테이지 실패 조건을 달성했을 때 호출하는 함수이다.
// GameManager에서 스테이지 실패 조건 달성 시 호출
public void StageFail()
{
	_isOver = true;
}

Bottom Class

  • Bottom.OnCollisionEneter2D
    • 바닥에 공이 부딪혔을 때를 감지한다.
    • 부딪힌 오브젝트의 tag 값이 Ball 일 경우에 게임 매니저에게 게임 오버 함수를 실행할 것을 요청한다.
    • TODO
      • gameObject.tag 로 변경
private void OnCollisionEnter2D(Collision2D collision)
{
	if (collision.gameObject.name == "Ball")
    {
    	GameManager.I.GameOver();
    }
}

Skybox

  • MainCamera의 Clear Flags 속성을 Skybox로 바꿔주고, Skybox 컴포넌트를 추가해준 뒤 Material을 넣어주면 카메라 배경이 바뀐다!
  • 에셋 스토어에서 쓸만한 리소스들을 찾다가 Skybox가 많이 보이길래 찾아보다가 알게 된 기능!
    파노라마 리소스도 많아서 추후에 유용하게 쓰일 것 같다.
    스크립트 상에서 Material을 바꿔줄 수 도 있어서 여러가지로 응용 가능할 듯!!!



역할 분담으로 맡은 기능 로직은 다 구현했는데, 다른 분들 기능 구현이 끝나야 연결할 수 있어서 얌전히 기다렸다 ,,
기다리는 동안 Skybox 적용하면서 이것저것 만져보고 다른 리소스도 찾아봤는데 아직 쏙 맘에 드는게 없어서 또 픽셀 공장 돌려야 되나 걱정이다 ㅇㅅaㅇ

저녁 회의로 코드 리뷰하면서 다른 분들 기능 구현 죅금 도와드리고 끗!!


0개의 댓글