일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- c#
- InputManager
- 장애물달리기
- unity
- 유니티
- 스파르타내일배움캠프
- Generic
- skybox
- inputsystem
- 프로그래머스
- 메서드
- 람다식
- 유한상태머신
- LINQ
- invokec#events
- 배열
- 자료구조
- UI
- 효과음
- soundmanager
- FSM
- 비선형자료구조
- 인터페이스
- BGM
- ObjectPool
- delegate
- 직렬화
- 스택
- script
- 코루틴
- Today
- Total
Unity 개발일지
[Unity] 장애물 달리기 만들기 1 - 계획 - 본문
팀프로젝트 작업으로 간단한 퍼즐 게임을 만드는데 장애물 달리기를 구현하기로 했다.

[게임 개요]
장애물을 피해서 목적지 까지 도착하면 되는 간단한 미니게임이다.
플레이어는 오른쪽에서 Cube에서 왼쪽 Cube까지 달려가서 오른쪽의 큐브에 상호작용을 하면 게임이 끝난다.
장애물은 5개의 지점에서 쏘는데 5가지 종류의 장애물을 쏘고, 한군데에서는 장애물을 쏘지 않는다.
[Hierarchy 창 목록]

AvoidObstacleGM을 만들어 작업 후 팀원들과 Scene에 합칠 때 사용하기 위해
Prefab화 하였다.
StartCube와 EndCube는 상호작용을 할 수 있도록 만들었으며
AvoidObstacleBorder는 StartCube에 상호작용 하면 생기는 보이지 않는 벽들을 설정하였고, ObstacleDestroyTrigger 오브젝트를 통해 시작지점에 도착하는 장애물을 ObjectPool로 되돌린다.
Shooters에는 장애물들을 발사하는 Shooter들을 모아놓았다.
[1. Shooter 위치 지정하기]
장애물을 발사 할 Shooter1~5의 위치를 조정한 후 Shooters에 모아놓았다.
이 과정에서 Gizmo라는 것을 사용했는데 간단한 스크립트로 Scene에서 시각적으로 디버깅 할 수 있어
Shooter의 위치를 조정하기 편했다.

그리고 이 Shooter들에게 장애물을 발사시킬 계획이므로 ShootObstacle이라는 스크립트를 미리 붙여주었다.
기즈모 메뉴 - Unity 매뉴얼
씬 뷰와 게임 뷰에는 모두 기즈모(Gizmos) 메뉴가 있습니다. 기즈모 메뉴에 액세스하려면 씬 뷰 또는 게임 뷰의 툴바에서 Gizmos 버튼을 클릭합니다.
docs.unity3d.com
[2. Border 설정하기]

BoxCollider를 이용하여 게임장소를 제한해주었다.
왼쪽 Cube 앞의 Border는 Trigger충돌로 바꿔서
플레이어가 진입할 수 있게 해주었고,
Shooter가 쏜 장애물이 이곳에 닿으면 ObjectPool로 돌려보낸다.
Border Layer를 만들고 오브젝트들의 속성을 Border로 변경한다.
진행하다보니 장애물이 바닥 Terrain과도 충돌해서
Terrain의 속성도 Default에서 Border로 변경하게되었다.
[3. AvoidObstacleGM 컴포넌트등록]

이 오브젝트가 해당 미니게임을 총괄할 것이므로 AvoidObstacleGameManager 스크립트를 등록해주었고,
AvoidObstacleObjectPool도 등록해주었다.
컴포넌트 등록은 추후 스크립트를 작성한 후 진행하겠다.