113 lines
6.2 KiB
Markdown
113 lines
6.2 KiB
Markdown
# Tài liệu Hệ thống Di chuyển và Camera (Player Movement & Camera System)
|
|
|
|
Tài liệu này mô tả chi tiết cơ chế hoạt động, cấu trúc kỹ thuật và lộ trình phát triển của hệ thống điều khiển nhân vật trong dự án **HALLUCINATE**.
|
|
|
|
---
|
|
|
|
## 1. Kiến trúc Cốt lõi (Core Architecture)
|
|
|
|
Hệ thống được xây dựng trên mô hình **State Machine (Máy trạng thái)** kết hợp với **CharacterController**, giúp quản lý các hành động phức tạp một cách tách biệt và dễ mở rộng.
|
|
|
|
* **PlayerStateMachine**: Trung tâm điều phối, quản lý việc chuyển đổi giữa các trạng thái và lưu trữ các chỉ số (Tốc độ, Stamina, Gravity).
|
|
* **InputReader**: Sử dụng **Unity New Input System**, xử lý toàn bộ tín hiệu từ bàn phím/chuột.
|
|
|
|
---
|
|
|
|
## 2. Định nghĩa các Trạng thái (Player States)
|
|
|
|
Hệ thống sử dụng các State riêng biệt để xử lý logic:
|
|
|
|
* **IdleState**: Trạng thái nghỉ khi không có input di chuyển.
|
|
* **MoveState**: Di chuyển đi bộ cơ bản. Hiện tại đang sử dụng **1D Blend Tree** (tốc độ). Sẽ sớm chuyển sang **2D Simple Blend Tree** (Forward & Strafe) để hỗ trợ di chuyển đa hướng linh hoạt hơn.
|
|
* **RunState**: Trạng thái chạy nhanh khi giữ Shift. Tiêu tốn Stamina theo thời gian.
|
|
* **DashState**: Đẩy nhân vật về phía trước một đoạn ngắn rất nhanh (Burst). Tiêu tốn Stamina ngay lập tức.
|
|
* **AirDashState**: Thực hiện Dash khi đang ở trên không. Trạng thái này sẽ reset vận tốc rơi (Y velocity) về 0 để lướt ngang. Tiêu tốn Stamina nhiều hơn Dash mặt đất.
|
|
* **DodgeState**: Né tránh hoặc lăn (Roll). Có thời gian hồi và tiêu tốn Stamina.
|
|
* **JumpState**: Kích hoạt lực nhảy dựa trên `JumpHeight`. Tiêu tốn một lượng nhỏ Stamina.
|
|
* **FallState**: Trạng thái rơi tự do. Cho phép kích hoạt các "Air Actions" như AirDash hoặc Thrust.
|
|
* **ThrustState**: Đòn trảm từ trên không lao xuống đất thẳng đứng (tương tự Genshin Impact). Vận tốc rơi sẽ tăng cực mạnh, gây chấn động khi tiếp đất.
|
|
* **CrouchState**: Ngồi và lẻn đi. Giảm chiều cao va chạm và tốc độ di chuyển.
|
|
* **ParkourState**: Tự động thực hiện các động tác vượt vật cản (Step Up, Vault).
|
|
* **InteractState**: Trạng thái tạm thời khi thực hiện tương tác với vật thể.
|
|
|
|
---
|
|
|
|
## 3. Thông số Di chuyển (Movement Specs)
|
|
|
|
| Trạng thái | Tốc độ | Mô tả |
|
|
| :--- | :--- | :--- |
|
|
| **Idle** | 0 | Trạng thái nghỉ. |
|
|
| **Walk/Move** | 6.0 | Di chuyển cơ bản (Sẽ đổi sang 2D Blend Tree). |
|
|
| **Sprint/Run** | 9.0 | Chạy nhanh, tiêu tốn Stamina. |
|
|
| **Dash (Lướt)** | 9.0 | Cú bùng nổ tốc độ ngắn (0.25s). |
|
|
| **Crouch** | 1.5 | Di chuyển chậm, hạ thấp trọng tâm. |
|
|
|
|
---
|
|
|
|
## 4. Hệ thống Stamina (Thể lực) - *Dự kiến triển khai*
|
|
|
|
Cơ chế Stamina được thiết kế để giới hạn các hành động cường độ cao của người chơi.
|
|
|
|
* **Max Stamina**: 100 đơn vị.
|
|
* **Tiêu thụ (Consumption)**:
|
|
* **Dash**: -20 đơn vị | **AirDash**: -30 đơn vị | **Jump**: -10 đơn vị.
|
|
* **Sprinting (Run)**: -15 đơn vị/giây.
|
|
* **Hồi phục (Regeneration)**:
|
|
* **Tốc độ hồi**: +20 đơn vị/giây.
|
|
* **Độ trễ hồi (Delay)**: Bắt đầu hồi sau 1 giây kể từ lần tiêu thụ cuối cùng.
|
|
|
|
---
|
|
|
|
## 5. Hệ thống Camera (Camera Controller)
|
|
|
|
### 5.1 Chế độ xem kép (Dual View)
|
|
* **Third Person (TPV)**: Có hệ thống tránh xuyên tường (`CollisionHandler`) và làm mờ nhân vật khi ở gần (`CharacterFading`).
|
|
* **First Person (FPV) Tối ưu**:
|
|
* **Direct Snapping**: Camera gán vị trí trực tiếp vào `fpvTarget` (vùng đầu/mắt) để triệt tiêu hiện tượng lag model.
|
|
* **No Position Smoothing**: Không sử dụng `SmoothDamp` cho vị trí trong FPV để đảm bảo Camera luôn nằm "bên trong" người chơi.
|
|
|
|
### 5.2 Hiệu ứng phản hồi (Game Feel)
|
|
* **Dynamic FOV**: FOV tự động mở rộng khi chạy nhanh (Sprint).
|
|
* **Camera Shake**: Rung màn hình dựa trên **Perlin Noise**, tính toán cường độ theo độ cao khi rơi (`Fall Impact Shake`).
|
|
|
|
---
|
|
|
|
## 6. Hệ thống Tự động Thiết lập (Auto Setup System)
|
|
|
|
Để đảm bảo tính nhất quán giữa các nhân vật, dự án sử dụng `CharacterAutoSetup`.
|
|
* **Cơ chế**: Tự động phân tích Humanoid Bones (Đầu, Vai) để cấu hình `Height`, `Radius`, và `Center` cho CharacterController.
|
|
* **Ground Check**: Đồng bộ hóa bán kính và vị trí kiểm tra mặt đất trong `PlayerStateMachine`.
|
|
|
|
---
|
|
|
|
## 7. Hệ thống Tương tác (Interaction System)
|
|
|
|
Sử dụng Interface `IInteractable`:
|
|
* **Dò tìm**: Tự động quét các vật thể trong tầm nhìn.
|
|
* **Đổi mục tiêu**: Người chơi dùng phím `Q/R` để chuyển đổi mục tiêu nếu có nhiều vật thể.
|
|
* **Thực thi**: Nhấn `E` để kích hoạt hành động tương tác.
|
|
|
|
---
|
|
|
|
## 8. Hệ thống Debug & Giám sát (Debug Provider)
|
|
|
|
Cung cấp công cụ trực quan hóa trạng thái nhân vật:
|
|
* **Debug UI**: Canvas World-space đuổi theo nhân vật, hiển thị State Name, Speed, Stamina, và Interactable Target.
|
|
* **Phím tắt**: `Ctrl + Shift + B` để ẩn/hiện bảng Debug.
|
|
|
|
---
|
|
|
|
## 9. Lộ trình Thực hiện & Nâng cấp (To-Do)
|
|
|
|
### 🔄 Ưu tiên cao
|
|
* **Tích hợp Stamina**: Áp dụng tính toán Stamina vào logic State Machine.
|
|
* **Refactor FPV Camera**: Triệt tiêu độ trễ vị trí camera trong góc nhìn thứ nhất.
|
|
* **2D Animation**: Chuyển đổi sang 2D Simple Blend Tree.
|
|
|
|
### 🚀 Nâng cấp dài hạn
|
|
* **Thrust Impact**: Thêm VFX và Area Damage cho đòn trảm không trung.
|
|
* **Parkour nâng cao**: Vaulting (nhảy qua tường), Wall Run dựa trên `EnvironmentScanner`.
|
|
|
|
---
|
|
*Tài liệu được cập nhật tự động bởi Gemini CLI - 2026-03-29*
|