Buổi học số 745 phút

Buổi 7: Game Tương tác Thực tế Ảo (AR) - Chém Quả Bằng Chuyển Động Cổ Tay

Mục tiêu trọng tâm: Dùng AI Pose Detection theo dõi cổ tay người chơi, gắn lưỡi kiếm ảo vào vị trí đó để chém trái cây rơi trên sân khấu.

Nội dung & thực hành

🍉 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.

Nhiệm vụ: Chém càng nhiều trái cây càng tốt trước khi hết thời gian, nhưng phải tránh bom.

🎯 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

Mục Trọng Tâm

Nhân vật

Tạo hoặc chọn các nhân vật:

Nhân vậtVai trò
Lưỡi_kiếmDi chuyển theo bàn tay
Trái_câyVật phẩm cần chém
BomVật nguy hiểm cần tránh
Mục Trọng Tâm

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:

text
Điểm
Mạng
Thời_gian

Giá trị ban đầu:

text
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:

text
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.
⚠️ Không vung tay quá mạnh và không đứng gần đồ vật dễ vỡ.

3. Điều khiển lưỡi kiếm bằng bàn tay

Tạo hai biến:

text
Cổ_tay_X
Cổ_tay_Y

Sử dụng cổ tay phải để điều khiển:

text
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:

text
Đ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:

text
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ây
text
Khi 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ày

Sau 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.

💡 Muốn vệt dài hơn, tăng số lần lặp và giảm lượng thay đổi, ví dụ 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:

text
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ình

6. 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:

text
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ày

Mỗ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áo1
Cam2
Dưa hấu3

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:

text
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ày

Kiểm tra số mạng liên tục trong nhân vật Lưỡi_kiếm:

text
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

text
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:

text
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

  1. 1Người chơi có 60 giây.
  2. 2Di chuyển bàn tay để điều khiển lưỡi kiếm.
  3. 3Chém trái cây để nhận điểm.
  4. 4Tránh chạm vào bom.
  5. 5Chạm bom sẽ mất một mạng.
  6. 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:

  1. 1Tăng tốc độ trái cây theo điểm số.
  2. 2Tạo trái cây vàng được cộng 5 điểm.
  3. 3Dùng cả hai tay để điều khiển hai lưỡi kiếm.
  4. 4Thêm hiệu ứng tách đôi khi chém trúng.
  5. 5Tạo bảng điểm cao nhất.
  6. 6Thêm màn hình bắt đầu và nút chơi lại.

Ví dụ tăng độ khó:

text
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.
Mục Trọng Tâm

Câu hỏi nhanh

  1. 1Điểm mốc nào được dùng để điều khiển lưỡi kiếm?
  2. 2Vì sao nên dùng bản sao để tạo trái cây?
  3. 3Làm thế nào để một trái cây không bị cộng điểm nhiều lần?
  4. 4Điều gì khiến trò chơi kết thúc?

Sẵn sàng kiểm tra kiến thức?

Chuyển sang phòng thi riêng để làm bài, xem kết quả và giải thích.

Bài Đánh giá Năng lực Phần 2: Computer Vision & AI Pose Tracking →14 câu · 15 phút