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

유니티5 독학하기 그 61번째 걸음-무한히 계속되는 스테이지 생성 part2

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

안녕하세요?


지난번 포스팅에서 중간에 끊었는데, 이제 남은 분량을 포스팅 하고자 합니다. 이번 포스팅에서 어떻게 해서 끝없이 계속되는 스테이지가 만들어 질 수 있는지에 대해서 포스팅을 마루리 하고자 합니다.



LevelGenerator.cs에 위 스크린샷과 같이 RemoveOldestPiece()라는 메소드를 작성하도록 합니다. 이 메소드를 작성하는 이유는 바로 너무 오래 만들었는 발판을 계속 남겨둬서 용량이 커지게 할 수는 없으니, 그냥 제거하는 메소드입니다. 


실제로 씬에 배치가 된 pieces리스트의 [0]번째를 제거하는데, 먼저 oldestPiece라는 변수명에 리스트의 0번째 값을 지정 하도록 하고, 먼저 pieces라는 리스트에서 먼저 제거를 하도록 합니다. 그리고 나서 이미 씬에 배치가 된 게임 오브젝트는 Destroy()라는 메소드를 쓰는데, oldestPiece.gameObject라고 붙여서 이게 게임 오브젝트라는 것을 반드시 알 수 있도록 해 줍니다.



다음은 LeaveTrigger.cs라고 하는 C#스크립트를 하나 제작하도록 합니다.



여기서는 Collider2D에 뭐가 닿기만 해도 바로 작동이 되는 메소드인 OnTirggerEnter2D()라는 메서드를 이용, 여기서는 이 collider2D에 닿는다면 AddPiece()메소드를 실행 시키고, 다음으로 오래된 발판을 없애는 메소드 역시 여기서 실행이 되게 됩니다.



그리고 나서 이번에는 LeaveTirgger라는 게임 오브젝트를 선택 하도록 합니다.




여기다가 방금전에 작성해 놓은 LeaveTrigger.cs라는 스크립트를 인스펙터 뷰에서 추가해 주도록 합니다. 이렇게 해서 LeaveTirgger라는 게임 오브젝트에 발판이 부딧치면 이전에 만든 것은 없어지고, 새로 발판이 만들어 집니다.



도대체 이 LeaveTrigger가 어디에 있느냐 하면, 바로 위 스크린샷에 있는 것처럼 저렇게 발판이 이어지는 곳 끝에 위치하고 있습니다. 그래서 여기에 블록이 닿으면 예전에 만든 발판은 제거하고, 새로 발판을 만들게 되는 것 입니다.



이제 Update()에만 AddPiece()를 하지 말고, 맨 처음 Start()에서 GenerateInitialPieces()라는 유저정의 메소드가 작동하도록 해 줍니다. 그리고 For문을 지용해서 한번만 생성되도록 해 줍니다. 그런데 이렇고도 제대로 된 길이의 발판이 나오는 이유는 간단하게도 먼저 LevelPieceBasic이라는 게임 오브젝트에 기본적으로 생성이 되는 Floor가 14개나 되고, 이게 2회 걸쳐서 생성이 되기 때문에 충분히 LeaveTrigger에 닿기 때문입니다.



그리고 제대로 시작할 경우 달리고, 뛰는 애니메이션이 나올 수 있도록 LevelPieceBasic의 Layer를 Ground로 바꾸어 주도록 합니다. 그래야 제대로 뛰고 점프를 할 수 있기 때문입니다.




이게 어떤 방식으로 잘동하는지 일단 유니티에서 플레이 버튼을 누른 다음에, 게임뷰를 씬 뷰로 바꾼 다음, 보면, 이렇게 발판이 연장되고 사라지는 것을 볼 수 있습니다.



그런데 한가지 문제가 생긴 것을 볼 수 있는데, 우선 게임뷰에서 화면밖으로 플레이어 캐릭터가 나가버리는, 즉 카메라 밖으로 나가 버리는 문제점이 있습니다. 그래서 카메라가 플레이어 캐릭터를 따라 다니도록 지원해야 합니다. 우선 CameraFollow라는 유니티패키지를 가지고 오도록 합니다.



여기에는 C#언어 스크립트 하나만 있는 것을 볼 수 있습니다.



유니티5로 가져오는 데 성공했다면, 여기서 CameraFallow.cs라는 스크립트가 들어온 것을 볼 수 있습니다.



여기서 메인 카메라에 이 CameraFollow라는 스크립트를 넣은 다음에, target에 Player게임 오브젝트를 가지고 오면 됩니다.



이제 완성이 된 모습입니다. 이것으로 주인공인 플레이어는 무한히 걸어 갈 수 있도록 스테이지가 이어지게 됩니다. 다만 아직까지는 불안한 점이라면 불안한 점이, 어떻게 해야 이걸 책이나 이런 것의 도움없이도 할 수 있는지에 대해서는 아직까지 완전한 감이 오지는 않습니다. 그래도 계속해서 실습을 이어나가도록 하겠습니다.

반응형