본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그 65번째 걸음-3가지 과제의 해결

by 인터넷떠돌이 2018. 8. 14.
반응형

안녕하세요?


어째 포스팅을 작성하다가 도중에 예전에 한참이나 안 쓰던 구형 삼성 노트북의 업데이트가 되는 바람에 쓰던 글이 날라가서 새로 작성을 하게 되었습니다. 아무튼 제목에서 나온 3가지 과제란, 아직까지 구멍을 제대로 뛰어넘지 못하는데 이걸 뛰어넘어 가도록 조작을 하는 것이 하나, 그 다음에는 게임오버시 뜨는 메뉴가 아직 적용이 되지 않는데, 이걸 적용하게 만드는 것이 둘, 그리고 마지막으로 게임오버시 계속 달리는 문제점이 나오는데, 멈추도록 만드는 것이 셋입니다.



먼저 Player게임 오브젝트를 계층뷰에서 선택한 다음에, 인스펙터 뷰에 있는 running speed를 건드리도록 합니다.



우선 속도를 올려 보았는데, 제대로 넘어가지 못했습니다.



계속해서 속도를 변경시켜 보도록 합니다.



어떻게 하다하다 보니, 이제서야 간신히 넘어가는 값이 나오는 것을 볼 수 있었습니다.




마지막으로 점프력과 달리기 속도가 위 조건과 같을 때 어떻게 넘어가는 것이 편하다는 것을 알 수 있었습니다.



다음으로는 게임오버시 나오는 메뉴 버튼이 제대로 동작하지 않는 문제가 나왔는데, 이 문제를 해결하기 위한 작업에 들어가고자 합니다. 우선은 UI게임 오브젝트의 자식 오브젝트인 GameOverCanvas를 선택한 다음에, PlayButton이라는 게임 오브젝트를 선택 하도록 합니다.



인스펙트 뷰에 있는 OnClick()을 선택한 다음에, 먼저 GameManager를 계층뷰에서 끌어다 오도록 합니다.



GameManager안에 있는 StartGame()이라는 메소드를 선택해서 PlayAgain이라는 것에 어울리는 기능을 수행하도록 해 줍니다.



다음으로는 MainMenuButton이라는 게임 오브젝트를 선택해서 메뉴로 돌아가기를 구현 하도록 해 봅니다.



역시 이번에도 GameManager를 끌어다 놓은 다음에, GameManager.cs에 있는 메소드를 하나 불러오도록 합니다.



그런데 BackToMenu()메소드를 선택해도, 아무런 일도 일어나지 않는데, 그 이유는 바로 GameManager.cs에 아무 코딩도 안 했기 때문입니다. 그래서 이번에는 아래처럼 코딩을 하도록 합니다.



원래는 비어 있는 메소드인데, 여기서는 위 스크린샷처럼 GameState를 menu로 바꾸어 주도록 합니다.



 

이번에는 메뉴로 돌아가기와 다시 게임하기가 제대로 작동하는 것을 볼 수 있었습니다. 이제 마지막 문제인 게임오버시에도 계속해서 앞으로 나아가는데, 이를 막고자 합니다.



이를 위해서 먼저 위 스크린샷에 나와있는 것처럼 PlayerController를 조작하도록 합니다.



먼저 Kill()메소드가 실행이 되면, runningSpeed가 0이 되도록 선언을 했습니다만, 효과는 그닥 없었습니다.



그래서 이번에는 위 스크린샷처럼, FixedUpdate()에 있는 메소드에서 else로 해서, menu와 gameover상태이면, rigidBody의 Vector2의 X축 속도가 0이라고 선언을 하도록 했습니다.



이것으로 이제 제시된 3가지 문제를 해결하는 데 성공했습니다. 하지만 이러고도 아직 게임 오버 시에 나오는 화면에 스코어랑 동전갯수, 그리고 어딘가 배치를 약간 더 해야 할 것으로 보이는 디자인이 있는데, 이것도 문제는 문제이고, 아직 배경도 없다는 것이 문제입니다. 마지막으로 다시하기를 선택했더니, 이상현상이 나오는 것을 볼 수 있는데, 이렇게 해서 4가지 문제가 있습니다. 이것도 이것대로 해결을 해봐야 겠습니다.

반응형