
2개의 씬을 사용하여 구성하였다.
특정 오브젝트에 레이어를 설정고 RayCastHit2D를 사용하여
그 오브젝트가 조건 레이어를 가지고 있다면 미니게임 설명 UI가 실행되게 만들었다.
이 UI를 통해 미니게임을 실행할지 UI를 닫을지 결정하게 하였다.
발생했던 문제
해결
void OnPress(InputValue input) // input asset 사용 space로 동작
{
Vector2 playerDirection = movementDirection != Vector2.zero ? movementDirection : lastDirection;
RaycastHit2D hit = Physics2D.Raycast(transform.position, playerDirection, 5f, 1 << (LayerMask.NameToLayer("MiniGame")));
if (input.isPressed)
{
if (hit.collider != null && (hit.collider.gameObject.layer == LayerMask.NameToLayer("MiniGame")))
{
UIManager.Instance.ChangeState(UIState.How);
}
}
else
{
EventSystem.current.SetSelectedGameObject(null);
}
}
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
return;
}

현재 점수, 최고 점수, 종합 점수로 구성했고
Flappy Plane 게임 진행 방식에 따라 1점씩 획득하게 된다.
게임 중에는 현재 점수가 표시되고 결과창에는 현재, 최고 점수가 표시된다.
메인 씬으로 넘어오면 메인화면에 최고 점수와 종합 점수가 표시된다.
발생했던 문제
해결
게임매니저
public void StartGame()
{
UIManager.Instance.ResetNowScore(); // 현재 점수 초기화
SceneManager.LoadScene("MiniGameScenes");
}
--------------------------------------
UI매니저
public void ResetNowScore()
{
nowScore = 0;
OnScoreUpdated?.Invoke(nowScore, totalScore, bestScore);
}
미니게임에서 사망하게 되면 결과창UI를 띄어주고 버튼을 통해
한번 더 게임을 할건지 메인씬으로 돌아갈건지 결정하게 만들었다.
발생했던 문제
해결
private void Update()
{
Score.text = UIManager.Instance.nowScore.ToString();
bestScore.text = UIManager.Instance.bestScore.ToString();
}

https://www.youtube.com/watch?v=6LK9-IwRgEc
아무래도 유니티는 처음이다 보니까 작업하는데 좀 많이 어려웠다.
아직도 제대로 이해하지 못한 것들이 엄청 많다.
그래도 필수 기능은 어느정도 구현이 된 것 같아 개인적으로 조금 만족스럽긴하다.
다음 챕터는 다시 팀 과제일텐데 부족한게 많지만 열심히 해봐야겠다.