← Về blog

Xây dựng game RPG 3D với Unity MCP: Điều khiển góc nhìn thứ ba, Chiến đấu và Nhiệm vụ

Hướng dẫn thực tế Unity MCP để tạo bản prototype RPG 3D—di chuyển góc nhìn thứ ba, cận chiến thời gian thực, state machine kẻ địch và nhiệm vụ trong Cursor hoặc các IDE AI MCP khác. Tinh chỉnh UI sau nếu cần.

Đăng ngày
  • Unity MCP
  • 3D RPG
  • Unity
  • combat
  • AI game development

Phạm vi một bản chơi thử tối thiểu

Một bản prototype RPG 3D sẵn sàng demo thường cần những phần sau trước tiên: di chuyển và camera góc nhìn thứ ba có thể điều chỉnh, một vòng lặp cận chiến thời gian thực, một kẻ địch với state machine nhỏ, một nhiệm vụ hoặc hội thoại có thể kích hoạt, và HUD hiển thị máu hoặc tiến trình nhiệm vụ. Hướng dẫn này tuân theo thứ tự xây dựng đó. Giả sử bạn điều khiển một dự án Unity đang mở từ Cursor, Claude Code, Codex, hoặc một IDE AI hỗ trợ MCP khác thông qua Unity MCP—đọc và ghi scene, GameObject và C#, không chỉ dán tệp vào đĩa.

Cài đặt và kết nối: Hướng dẫn cài đặt Unity MCP. Các phiên bản editor được hỗ trợ theo trang sản phẩm (thường là Unity 2022.3+ / Unity 6).

Phạm vi một bản chơi thử tối thiểu

Chỉ phát hành v1 nếu bạn có thể chấp nhận:

  1. Di chuyển WASD, nhìn bằng chuột, nhảy; mặt đất và dốc nhẹ cảm giác ổn định
  2. Một đòn cận chiến (animation tạm chấp nhận được) chạm collider và gây sát thương
  3. Một kẻ địch: tuần tra → phát hiện người chơi → đuổi theo / tấn công; vô hiệu hóa hoặc phá hủy khi chết
  4. Một NPC: đến gần để nói chuyện hoặc nhận nhiệm vụ; mục tiêu “tiêu diệt kẻ địch đó”, sau đó cập nhật nhật ký
  5. HUD đơn giản: thanh máu + một dòng nhiệm vụ

Dựng hình bằng các khối cơ bản nếu cần. Coi menu chính, lưới túi đồ, HUD hoàn thiện là phần UI sau (xem bên dưới).

Sẵn sàng dự án và MCP

Trước khi thực hiện các prompt gameplay:

  • Dự án Unity đang mở; scene mục tiêu có thể vào Play
  • Unity MCP Server đang chạy; IDE AI có thể liệt kê các gốc Hierarchy (kiểm tra chỉ đọc)
  • Đã commit baseline; commit lại trước khi chỉnh sửa lớn

Kiểm tra chỉ đọc:

Liệt kê các GameObject gốc trong scene đang hoạt động. Không thay đổi gì.

Chỉ sau đó mới ghi. Giữ bridge trên localhost—không công khai cổng. Mẹo prompt: Unity MCP với Claude Code và Cursor.

Người chơi: điều khiển góc nhìn thứ ba trước

Khung tối thiểu (đổi tên cho phù hợp với dự án của bạn):

Player
├── CharacterController hoặc Rigidbody + CapsuleCollider
├── CameraPivot (yaw)
│   └── CameraArm (pitch) → Main Camera
└── AttackHitbox (trigger, tắt mặc định)

Hãy rõ ràng về input, camera và đường dẫn:

Tạo Assets/Scripts/Player/PlayerController.cs: góc nhìn thứ ba; WASD tương đối với hướng camera; yaw/pitch chuột (giới hạn pitch −30°–60°); Space để nhảy; gắn vào Player. Chạm đất qua CharacterController.isGrounded hoặc tương đương.

Sau đó tinh chỉnh cảm giác:

Tốc độ di chuyển ~5 với làm mượt gia tốc nhẹ; nhảy ~1.2 m; camera bám theo có giảm chấn nhẹ—không xoay nhanh.

Kiểm tra dốc, điều khiển trên không và camera xuyên vật thể trước khi ăn mừng “script đã tạo”.

Chiến đấu: một vòng lặp cận chiến chấp nhận được

Bỏ qua cây kỹ năng trong v1. Mục tiêu: nhấn tấn công → bật hitbox trong N khung hình → gây sát thương → làm mới HUD.

Thêm PlayerCombat.cs: tấn công bằng LMB, cooldown 0.6 s; bật AttackHitbox trong cửa sổ đó; gây 15 sát thương cho IDamageable. Kẻ địch triển khai IDamageable và HP hiện tại.

Nâng cấp vẫn đơn giản tùy chọn:

Khóa di chuyển ngắn khi tấn công; kẻ địch bị choáng ngắn; 0.4 s i-frame với hiệu ứng nhấp nháy sau khi người chơi nhận sát thương.

Đưa thay đổi máu thành sự kiện/callback để ràng buộc HUD sạch sẽ—tránh script UI dùng Find để tìm đối tượng trong world.

Kẻ địch: Idle / Patrol / Chase / Attack

Không cần cây hành vi. Bốn trạng thái đủ cho một con quái:

Idle → Patrol → Chase → Attack
         ↑________________↓ (mất mục tiêu)

Tạo Assets/Scripts/Enemy/EnemyAI.cs: tuần tra hai điểm; vào Chase trong phạm vi 12 m; Attack trong phạm vi 2 m (cooldown 1.2 s, 8 sát thương); quay lại Patrol sau 3 s khi mất người chơi; khi HP về 0 phát hiệu ứng chết hoặc SetActive(false).

Ưu tiên NavMeshAgent nếu bạn đã bake; nếu không thì dùng chuyển động seek/face đơn giản để tuần đầu không bị kẹt vì điều hướng. Animator tùy chọn—quay mặt và phản hồi màu sắc là đủ giai đoạn đầu.

Nhiệm vụ và NPC: một luồng chính

“Cảm giác nhiệm vụ” là kích hoạt → theo dõi → hoàn thành, không phải trình soạn thảo nhiệm vụ đầy đủ.

Giữ dữ liệu đơn giản:

  • QuestId, tiêu đề, mô tả, số tiến trình, cờ hoàn thành
  • NPC Interact (E hoặc trigger) mở hội thoại và StartQuest
  • Kẻ địch chết gọi QuestManager.NotifyKill(enemyId)

Tạo QuestManager singleton: nhận slay_wolf_01 (tiêu diệt 1 Wolf); tiến triển khi Wolf chết; cập nhật nội dung nhật ký nhiệm vụ khi hoàn thành. NPC Wizard: người chơi vào trigger, nhấn E để bắt đầu nhiệm vụ đó.

TMP/Text là đủ cho hội thoại v1; nhánh hội thoại để sau.

HUD: chỗ trống trước, UI hoàn thiện sau

Trong khi gameplay chưa xong, kết nối Slider / TMP_Text của engine:

Ràng buộc OnHealthChanged của người chơi vào thanh HUD; ràng buộc tiêu đề hiện tại của QuestManager vào dòng TMP trên màn hình.

Khi menu, túi đồ, hoặc thanh kỹ năng cần UI đẳng cấp thiết kế (PSD/Figma phân lớp, panel do NL tạo, tách và xuất thành prefab Unity), sử dụng quy trình canvas như AI Studio:

  1. Tạo hoặc nhập HUD / menu RPG
  2. Componentize và xuất đến ví dụ Assets/UI/
  3. Quay lại IDE AI + Unity MCP để ràng buộc nút, thanh và văn bản nhiệm vụ vào các sự kiện gameplay hiện có

Xử lý phần cắt cứng cho alpha trước nếu cần. Cấu trúc có thể đến từ canvas; ràng buộc và logic chiến đấu nằm trong Unity qua MCP—đừng mong đợi công cụ canvas viết toàn bộ FSM chiến đấu.

Chi tiết nhập: Figma to Unity UI.

Thứ tự xây dựng đề xuất

MCP: điều khiển người chơi → một vòng lặp cận chiến → một FSM kẻ địch → một nhiệm vụ + NPC
        ↓
MCP: kết nối HUD tạm (HP / dòng nhiệm vụ)
        ↓ (tùy chọn)
Công cụ canvas: menu / HUD hoàn thiện → xuất sang Unity
        ↓
MCP: ràng buộc UI hoàn thiện vào các sự kiện hiện có

Cảm giác, con số, AI, điều hướng → tiếp tục dùng Unity MCP.
Phân cấp hình ảnh toàn màn hình, thay đổi giao diện, xuất lại prefab → quay lại công cụ canvas.

Ranh giới prompt thực sự hữu ích

Prompt mơ hồ lãng phí thời gian. Xác định rõ:

  • Đường dẫn và điểm gắn — thư mục nào, đối tượng nào
  • Tiêu chí chấp nhận — ví dụ “trong 10 s Play, giết một con sói và thấy nhiệm vụ hoàn thành”
  • Ngoài phạm vi — ví dụ “không xây dựng lại toàn bộ hệ thống input; không xóa camera”
  • Một mối quan tâm mỗi prompt — điều khiển, rồi chiến đấu, rồi kẻ địch

Luôn tự mình chơi thử. MCP loại bỏ việc nhấp chuột lặp lại; nó không thay thế phán đoán thiết kế.

Danh sách kiểm tra chấp nhận

  • Di chuyển/camera góc nhìn thứ ba giữ điều khiển được trong ~2 phút mà không bị xuyên camera/mất kiểm soát rõ ràng
  • Cận chiến trúng đích đáng tin cậy; cooldown rõ ràng
  • Tuần tra vs đuổi theo dễ đọc; cái chết có phản hồi rõ ràng
  • Nhiệm vụ có thể nhận và hoàn thành; nội dung HUD cập nhật
  • Thay đổi máu đến được UI (chỗ trống OK)

Bước tiếp theo

  1. Hoàn thành hướng dẫn cài đặt Unity MCP và kiểm tra chỉ đọc
  2. Phát hành “di chuyển + một kẻ địch + một nhiệm vụ” theo thứ tự đó
  3. Thêm xuất UI hoàn thiện chỉ khi HUD phải trông hoàn chỉnh

Các bài hướng dẫn bạn có thể thích

Pixel hóa hình ảnh AI trong VberAI: Điều chỉnh kích thước khối & bảng màu, sau đó xuất tài nguyên sang Engine

Pixel hóa hình ảnh trong VberAI Studio biến nhân vật HD, bản đồ và đạo cụ thành pixel art có thể kiểm soát. Điều chỉnh kích thước khối, số màu và tông màu với xem trước trực tiếp—rồi tiếp tục chỉnh sửa hoặc xuất sang Unity / Godot / Cocos.

  • vberai
  • ai-studio
  • pixelate
  • pixel-art
Đọc thêm