# 🕹️ Cheatsheet: Unity cho người mới: tự làm game 2D và đóng gói lên iOS, Android

By Ngọc Vương Trương

> This cheatsheet is premium content. Sign in and purchase the course to view the full content.

Tra cứu nhanh cho toàn khóa. Thuật ngữ kỹ thuật giữ nguyên tiếng Anh.

---

## 1. Vòng lặp game và cấu trúc project Unity 2D (1.1)

### Vòng lặp game (game loop)

| Giai đoạn | Mô tả | Hàm Unity tương ứng |
| --- | --- | --- |
| Input | Đọc thao tác người chơi | `Update()` |
| Update | Cập nhật logic, vị trí, trạng thái | `Update()` |
| Physics | Mô phỏng va chạm, di chuyển vật lý | `FixedUpdate()` + physics engine |
| Render | Vẽ khung hình ra màn hình | Tự động (Camera) |

- `Update()`: gọi mỗi frame, phụ thuộc frame rate. Dùng cho input, logic, UI.
- `FixedUpdate()`: gọi theo chu kỳ cố định (`Fixed Timestep`, mặc định 0.02s). Dùng cho `Rigidbody2D` và lực vật lý.
- `Time.deltaTime`: khoảng thời gian giữa 2 frame. Nhân vào để chuyển động độc lập frame rate.

### Cấu trúc project Unity 2D

```tree
Assets/
  Scenes/
    Game.unity
  Scripts/
    PlayerController.cs
    GameManager.cs
    ScoreManager.cs
  Sprites/
    player.png
    obstacle.png
  Prefabs/
    Player.prefab
    Obstacle.prefab
  UI/
    Canvas, Text, Button
ProjectSettings/
Packages/
```

| Thư mục | Chứa gì |
| --- | --- |
| `Assets/Scenes` | File scene (`.unity`) |
| `Assets/Scripts` | Script C# |
| `Assets/Sprites` | Hình ảnh 2D |
| `Assets/Prefabs` | Object mẫu tái sử dụng, spawn runtime |
| `Assets/UI` | Canvas, Text, Button |

### Template & thiết lập ban đầu

1. Tạo project: Unity Hub > New Project > template **2D**
2. Đặt tên project, chọn vị trí lưu
3. Chọn Scene mặc định, lưu vào Assets/Scenes
4. Trong Game view, chọn độ phân giải tham chiếu (ví dụ 1080x1920 dọc)
5. Kiểm tra Physics 2D có sẵn (Rigidbody2D, Collider2D)

> **Note:** 
> Template **2D** đặt sẵn camera orthographic và cài đặt phù hợp cho game 2D. Template **3D** dùng camera perspective, không hợp với game 2D phẳng.

---

## 2. Nhận input và di chuyển nhân vật (1.2)

### Các cách nhận input
