# 코드로 레벨 생성하기 가이드

## 📋 개요

이제 **코드로 레벨을 자동 생성**할 수 있습니다! 플랫폼을 하나하나 배치할 필요 없이, 데이터만 정의하면 자동으로 생성됩니다.

---

## 🎮 Unity 에디터에서 설정하기

### 1단계: Resources 폴더 확인

이미 생성되어 있어야 합니다:
- `Assets/Resources/Levels/` 폴더

---

### 2단계: 레벨 데이터 생성

#### 방법 A: 자동 생성 (추천)

1. **Hierarchy에서 빈 GameObject 생성**
   - 우클릭 → Create Empty
   - 이름: `LevelCreator`

2. **LevelDataCreator 컴포넌트 추가**
   - Add Component → `LevelDataCreator`

3. **레벨 데이터 생성**
   - Inspector에서 컴포넌트 우클릭
   - **Create Stage 1 Data** 클릭
   - **Create Stage 2 Data** 클릭

4. **확인**
   - `Assets/Resources/Levels/` 폴더에 `Stage1.asset`, `Stage2.asset` 생성됨
   - Console에 "Stage 1 saved..." 메시지 확인

#### 방법 B: 수동 생성

1. **Project 창에서**
   - `Assets/Resources/Levels` 폴더 우클릭
   - Create → Thaw The Mask → Level Data
   - 이름: `Stage1`

2. **Inspector에서 설정**
   - Level Name: "Stage 1"
   - Stage Number: 1
   - Player Spawn Position: (-8, -2)
   - Goal Position: (8, 2)
   - Platforms: 수동으로 추가 (+ 버튼)

---

### 3단계: 플랫폼 프리팹 만들기

1. **Hierarchy에서 2D Object → Sprites → Square 생성**
   - 이름: `Platform`

2. **Box Collider 2D 추가**
   - Add Component → Box Collider 2D

3. **MaskObject 컴포넌트 추가**
   - Add Component → MaskObject
   - 설정은 기본값으로 (나중에 LevelGenerator가 자동 설정)

4. **Sprite Renderer 설정**
   - Color: 흰색 (255, 255, 255)

5. **프리팹으로 만들기**
   - Hierarchy에서 Platform을 Project 창의 `Assets/Prefabs/` 폴더로 드래그
   - Hierarchy에서 Platform 삭제

---

### 4단계: Goal 프리팹 만들기 (선택사항)

1. **2D Object → Sprites → Circle 생성**
   - 이름: `Goal`
   - Scale: (0.5, 0.5, 1)

2. **Sprite Renderer**
   - Color: 노란색 (255, 255, 0)

3. **Trigger Collider 추가**
   - Add Component → Circle Collider 2D
   - Is Trigger: ✓

4. **프리팹으로 만들기**
   - `Assets/Prefabs/Goal.prefab`로 저장

---

### 5단계: LevelGenerator 설정

1. **Hierarchy에서 빈 GameObject 생성**
   - 이름: `LevelGenerator`

2. **LevelGenerator 컴포넌트 추가**
   - Add Component → LevelGenerator

3. **설정**
   - **Level Data**: `Stage1` 드래그 (Resources/Levels/Stage1.asset)
   - **Platform Prefab**: `Platform` 프리팹 드래그
   - **Goal Prefab**: `Goal` 프리팹 드래그 (선택사항)
   - **Generate On Start**: ✓ (체크)

---

### 6단계: Player 태그 설정

1. **Hierarchy에서 Player 오브젝트 선택**

2. **Inspector 상단에서**
   - Tag → Player 선택
   - (이미 설정되어 있을 수 있음)

---

## 🎮 테스트하기

1. **Play 버튼** 클릭

2. **확인 사항**
   - ✓ 플랫폼들이 자동으로 생성됨
   - ✓ 플레이어가 시작 위치로 이동
   - ✓ Goal이 목표 위치에 생성됨
   - ✓ 가면 전환 시 플랫폼 가시성 변경

---

## 📝 레벨 데이터 수정하기

### Stage1.asset 파일 수정

1. **Project 창에서 Stage1.asset 선택**

2. **Inspector에서 수정**
   - **Platforms** 리스트 확장
   - **Size**: 리스트 크기 변경 (플랫폼 개수)
   - 각 플랫폼 설정:
     - Position: (x, y) 좌표
     - Size: (width, height) 크기
     - Visible In: Black Only / White Only / Both

3. **Play 눌러서 확인**
   - 변경사항이 즉시 반영됨

---

## 💡 레벨 디자인 팁

### 좌표 시스템
- **X축**: 왼쪽(-) ~ 오른쪽(+)
- **Y축**: 아래(-) ~ 위(+)
- 예: (-8, -3) = 왼쪽 아래, (8, 3) = 오른쪽 위

### 플랫폼 배치 예시

```
Stage 1 (튜토리얼):
- 시작: (-8, -3) Both - 안전한 시작 지점
- 중간: (-3, -2) WhiteOnly - 흰 가면 필요
- 중간: (0, -1) BlackOnly - 검은 가면 필요
- 골: (8, 2) Both - 목표 지점

Stage 2 (도전):
- 더 많은 플랫폼
- 더 좁은 간격
- 빠른 가면 전환 필요
```

### 난이도 조절
- **쉬움**: 플랫폼 크기 크게, 간격 좁게
- **어려움**: 플랫폼 크기 작게, 간격 넓게
- **가면 전환**: BlackOnly와 WhiteOnly 번갈아 배치

---

## 🔧 추가 기능

### 레벨 리로드
LevelGenerator에 다음 기능 있음:
- `ReloadLevel()` - 레벨 재생성
- `ClearLevel()` - 레벨 제거

### 다른 레벨로 전환
1. LevelGenerator 선택
2. Inspector에서 Level Data를 Stage2로 변경
3. Play 또는 `ReloadLevel()` 호출

---

## ⚠️ 문제 해결

### 플랫폼이 생성 안 됨
- Platform Prefab이 할당되었는지 확인
- Level Data가 할당되었는지 확인
- Console에 오류 메시지 확인

### 플레이어가 이동 안 함
- Player 태그가 설정되었는지 확인
- Player Spawn Position 좌표 확인

### 가시성이 안 바뀜
- MaskManager가 씬에 있는지 확인
- MaskObject 컴포넌트가 플랫폼에 있는지 확인

---

## 📸 이미지 레벨 재현하기

업로드하신 이미지 같은 레벨을 만들려면:

1. **Stage1.asset 열기**
2. **Platforms 리스트 수정**:
   - 위쪽 플랫폼들 (천장)
   - 중간 긴 플랫폼
   - 아래쪽 플랫폼들
   - 가시 장애물 (Spike 타입)

3. **좌표 예시**:
```
천장: (0, 3, 5, 0.3) BlackOnly
긴 플랫폼: (0, 0, 8, 0.5) Both
바닥: (-3, -2, 3, 0.5) WhiteOnly
```

원하시면 이미지 기반으로 정확한 레벨 데이터를 만들어드릴 수 있습니다!
