Files
BABA_YAGA/Assets/Scove/PlayerMovement_Documentation.md
2026-03-30 12:15:19 +07:00

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*