Buổi 7: Game Tương tác Thực tế Ảo (AR) - Chém Quả Bằng Chuyển Động Cổ Tay
Theory & practice
🍉 Bài 7: Chế tạo Game Ninja Fruit AR
🥷 Biến bàn tay thành lưỡi kiếm ảo
Trong bài học này, chúng ta sẽ kết hợp AI Pose Detection với webcam để tạo trò chơi Ninja Fruit AR.
Người chơi không cần dùng bàn phím hoặc chuột. AI sẽ theo dõi vị trí cổ tay và biến chuyển động của bàn tay thành một lưỡi kiếm ảo để chém trái cây.
🎯 Mục tiêu bài học
Sau bài học này, bạn có thể:
- Dùng AI theo dõi vị trí bàn tay.
- Điều khiển nhân vật bằng tọa độ cổ tay.
- Tạo nhiều trái cây bằng bản sao.
- Phát hiện va chạm giữa tay và vật thể.
- Xây dựng luật tính điểm, thời gian và lượt chơi.
1. Chuẩn bị trò chơi
Nhân vật
Tạo hoặc chọn các nhân vật:
| Nhân vật | Vai trò |
|---|---|
Lưỡi_kiếm | Di chuyển theo bàn tay |
Trái_cây | Vật phẩm cần chém |
Bom | Vật nguy hiểm cần tránh |
Phông nền
Chọn một phông nền đơn giản để hình ảnh webcam và nhân vật dễ quan sát.
Tạo các biến:
Điểm
Mạng
Thời_gianGiá trị ban đầu:
Khi bấm vào cờ xanh
Đặt [Điểm] thành [0]
Đặt [Mạng] thành [3]
Đặt [Thời_gian] thành [60]2. Bật AI Pose Detection
Thêm Extension Pose Detection, sau đó bật camera:
Khi bấm vào cờ xanh
Bật video trên sân khấu với độ mờ 20%
Liên tục
Phân tích tư thế từ cameraĐể chơi tốt hơn:
- Đứng cách camera một khoảng vừa phải.
- Giữ phần thân trên và hai tay trong khung hình.
- Chọn nơi có đủ ánh sáng.
- Dọn khoảng trống để có thể cử động an toàn.
3. Điều khiển lưỡi kiếm bằng bàn tay
Tạo hai biến:
Cổ_tay_X
Cổ_tay_YSử dụng cổ tay phải để điều khiển:
Khi bấm vào cờ xanh
Hiện
Liên tục
Phân tích tư thế từ camera
Đặt [Cổ_tay_X] thành
[Tọa độ x của cổ tay phải]
Đặt [Cổ_tay_Y] thành
[Tọa độ y của cổ tay phải]
Đi tới x: [Cổ_tay_X] y: [Cổ_tay_Y]Bây giờ nhân vật Lưỡi_kiếm sẽ di chuyển theo tay của người chơi.
Nếu chuyển động bị ngược trái và phải, hãy đổi tọa độ x thành giá trị âm:
Đi tới x: [0 - Cổ_tay_X] y: [Cổ_tay_Y]4. Tạo hiệu ứng đường kiếm
Để lưỡi kiếm để lại một vệt sáng ngắn, ta dùng bản sao mờ dần. Mỗi bản sao đứng yên tại vị trí cũ của lưỡi kiếm rồi mờ đi, tạo thành vệt kéo dài phía sau.
Thêm vào nhân vật Lưỡi_kiếm:
Khi bấm vào cờ xanh
Liên tục
Tạo bản sao của chính mình
Chờ 0.03 giâyKhi tôi bắt đầu là bản sao
Lặp lại 10 lần
Thay đổi hiệu ứng [bóng ma] một lượng 10
Xóa bản sao nàySau 10 lần lặp, bản sao trong suốt hoàn toàn và bị xóa, nên vệt kiếm không làm chậm trò chơi.
Lặp lại 20 lần với lượng 5.5. Tạo trái cây xuất hiện liên tục
Sử dụng bản sao để tạo nhiều trái cây:
Khi bấm vào cờ xanh
Ẩn
Liên tục
Chờ (số ngẫu nhiên từ 1 đến 2) giây
Tạo bản sao của chính mình6. Chém trái cây và tính điểm
Mỗi bản sao vừa bay lên vừa kiểm tra va chạm ngay trong vòng lặp bay. Nhờ vậy, trái cây có thể bị chém ở bất kỳ vị trí nào trên đường bay:
Khi tôi bắt đầu là bản sao
Đi tới x: (số ngẫu nhiên từ -200 đến 200) y: -170
Hiện
Lặp lại cho đến khi <y lớn hơn 180>
Thay đổi y một lượng 8
Xoay phải 10 độ
Nếu <Đang chạm vào [Lưỡi_kiếm]?> thì
Phát âm thanh [Chém]
Thay đổi [Điểm] một lượng 1
Chuyển sang trang phục [Trái cây đã cắt]
Chờ 0.2 giây
Xóa bản sao này
Chờ 0.03 giây
Xóa bản sao nàyMỗi trái cây chỉ được cộng điểm một lần vì bản sao bị xóa ngay sau khi được chém. Trái cây bay khỏi mép trên sân khấu cũng bị xóa để trò chơi không bị chậm.
Để trái cây bay tự nhiên hơn, bạn có thể thay đổi cả tọa độ x và y trong mỗi lần lặp.
Có thể tăng điểm theo từng loại:
| Trái cây | Điểm |
|---|---|
| Táo | 1 |
| Cam | 2 |
| Dưa hấu | 3 |
7. Thêm bom vào trò chơi
Bom xuất hiện giống trái cây nhưng có tác dụng làm mất mạng:
Khi tôi bắt đầu là bản sao
Đi tới vị trí ngẫu nhiên ở phía dưới
Hiện
Lặp lại cho đến khi <y lớn hơn 180>
Thay đổi y một lượng 7
Xoay phải 12 độ
Nếu <Đang chạm vào [Lưỡi_kiếm]?> thì
Phát âm thanh [Nổ]
Thay đổi [Mạng] một lượng -1
Xóa bản sao nàyKiểm tra số mạng liên tục trong nhân vật Lưỡi_kiếm:
Khi bấm vào cờ xanh
Liên tục
Nếu <Mạng nhỏ hơn hoặc bằng 0> thì
Phát thông báo [Kết thúc trò chơi]
Dừng [kịch bản này]Điều kiện phải nằm trong vòng Liên tục. Nếu chỉ kiểm tra một lần khi bắt đầu, trò chơi sẽ không bao giờ phát hiện người chơi đã hết mạng.
8. Tạo đồng hồ đếm ngược
Khi bấm vào cờ xanh
Đặt [Thời_gian] thành [60]
Lặp lại 60 lần
Chờ 1 giây
Thay đổi [Thời_gian] một lượng -1
Phát thông báo [Kết thúc trò chơi]Khi nhận thông báo kết thúc:
Khi nhận [Kết thúc trò chơi]
Nói kết hợp "Điểm của bạn: " với [Điểm] trong 3 giây
Dừng tất cả9. Luật chơi hoàn chỉnh
- 1Người chơi có
60 giây. - 2Di chuyển bàn tay để điều khiển lưỡi kiếm.
- 3Chém trái cây để nhận điểm.
- 4Tránh chạm vào bom.
- 5Chạm bom sẽ mất một mạng.
- 6Trò chơi kết thúc khi hết thời gian hoặc hết mạng.
🧪 Kiểm tra dự án
Trước khi hoàn thành, hãy kiểm tra:
- Lưỡi kiếm di chuyển đúng theo cổ tay.
- Camera không bị đảo hướng ngoài ý muốn.
- Trái cây xuất hiện ở nhiều vị trí.
- Mỗi trái cây chỉ cộng điểm một lần.
- Chạm bom làm giảm mạng.
- Đồng hồ giảm đúng mỗi giây.
- Trò chơi dừng khi hết giờ hoặc hết mạng.
- Nhấn cờ xanh có thể bắt đầu lại trò chơi.
🧩 Thử thách nâng cấp
Hãy chọn một ý tưởng để phát triển thêm:
- 1Tăng tốc độ trái cây theo điểm số.
- 2Tạo trái cây vàng được cộng 5 điểm.
- 3Dùng cả hai tay để điều khiển hai lưỡi kiếm.
- 4Thêm hiệu ứng tách đôi khi chém trúng.
- 5Tạo bảng điểm cao nhất.
- 6Thêm màn hình bắt đầu và nút chơi lại.
Ví dụ tăng độ khó:
Nếu <Điểm lớn hơn 10> thì
Giảm thời gian chờ tạo trái cây
Tăng tốc độ bay✅ Ghi nhớ
- Pose Detection giúp xác định vị trí cổ tay.
- Tọa độ cổ tay được dùng để điều khiển lưỡi kiếm.
- Bản sao giúp tạo nhiều trái cây mà không cần nhiều nhân vật.
- Điều kiện va chạm dùng để tính điểm hoặc giảm mạng.
- Biến số lưu điểm, mạng và thời gian.
- Camera cần đủ sáng để AI theo dõi chuyển động ổn định.
Câu hỏi nhanh
- 1Điểm mốc nào được dùng để điều khiển lưỡi kiếm?
- 2Vì sao nên dùng bản sao để tạo trái cây?
- 3Làm thế nào để một trái cây không bị cộng điểm nhiều lần?
- 4Điều gì khiến trò chơi kết thúc?