EasyCastleUNITY

길건너 친구들 모작 개발일지 7(장애물 랜덤하게 생성) 본문

3D 프로젝트 개발 일지(Crossy Road, 한글명: 길건너 친구들)

길건너 친구들 모작 개발일지 7(장애물 랜덤하게 생성)

EasyCastleT 2023. 10. 4. 18:17

앞에 포스팅에서, 플레이어의 이동을 장애물을 통해 제한하였습니다. 

그러므로 이제, 실제 인게임에서 장애물을 생성하여, 플레이어의 이동을 막아보겠습니다. 

 

장애물은 다음과 같은 2개의 용도로 사용됩니다.

1. 일정범위이상 못 움직이게 하기 위해 배치된 경우

2. 플레이어의 이동경로를 제한하기 위해 

 

그래서 저는, 무조건 설치되는 Default 장애물(1번 용도)과, Random 장애물(2번 용도, 설치 안 될 수 도 있음)로 나누어서 만들어 보도록 하겠습니다. 

 

먼저 Default 장애물입니다. 

캐릭터의 이동범위를 제한해야 하므로, 넘어가면 안되는 위치에 만들어져야 합니다. 

그래서, 빈 오브젝트를 통해, 위치를 지정해주었습니다. 

Default 장애물 설치 위치
잘 보이도록 잠깐 Ground 비활성화

 그리고 미리 만들어둔 3개의 프리팹들을 등록하여 주었습니다. 

Assign한 모습

그리고 위에서 지정한, Default 위치도 Assign 하였습니다. 

위와 같은 스크립트를 통해 Default 위치에 장애물이 생성되게 하였습니다. 

InitDefaultSummonPos에서, 계산하고 있는 값은, 각각의 장애물마다, 크기와 모습이 다르기에, 

인게임상에서 올바르게 위치할 수 있도록 하는 값들 입니다. 

 

다음으로는 Random 장애물입니다. 

이 장애물들은, 플레이어의 이동경로를 방해하기 위해 존재합니다. 

하지만, 아예 움직이지 못하도록 하면 안되기에, 플레이어가 지나갈 수 있는 빈틈을 만들어 주었습니다.

 

Random 장애물 설치 위치
잘 보이도록 잠깐만 Ground 비활성화, 파란색이 Random, 노란색이 Default

그리고 이 위치들은 Default 장애물 처럼, 등록해 주었습니다. 

장애물 생성하는 메서드
각각의 프리팹마다, 올바른 위치로 갈 수 있게 위치 초기화 하는 메서드

Default 장애물과 가장 큰 차이점은, 장애물이 무조건 해당 위치에 생성되는 것이 아니라는 것입니다. 

랜덤을 통해, 30%의 확률로 해당 위치에 장애물이 생성됩니다. 

실행결과1
실행결과2

다른 결과가 나오는 것을 확인할 수 있습니다. 

이렇게 장애물을 땅에 설치하는 것을 완료했습니다. 

그러므로 이제 실제 인게임내에서 땅이 설치되도록 해보겠습니다.

 

전에 만들어 둔, MapGenerator에 Assign 하는 groundPrefab을 이번에 만든 Ground로 대체합니다. 

https://easycastleunity.tistory.com/172

 

길건너 친구들 모작 개발일지3 (맵 구성 및 무한 맵 생성)

맵은 땅 한줄 씩 만들기로 하였습니다. 그래서 여러 종류의 땅들을 만들기로 하였습니다. 플레이어가 땅과 부딫치면, 점수가 올라가도록 하기위해, 땅이 되는 Ground에 콜라이더를 부착합니다. 그

easycastleunity.tistory.com

위에 링크로 들어가시면 MapGenerator에 대한 설명이 있습니다. 

그리고 실행시켜보았습니다. 

위와 같이 랜덤하게 장애물이 설치되면서 시작할때마다 다른 맵이 나오게 되었습니다. 

이렇게 장애물을 랜덤하게 배치하는 부분 구현을 마쳤습니다.