STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    Chipmunk - Phần 6: Tạo Physics Body Cho Các Đối Tượng Có Hình Dạng Phức Tạp

    Kĩ thuật tạo Physics Body cho các đối tượng có hình khối phức tạp trong game với Cocos2d-x và Physics Body Editor.
    15/06/2017
    30/09/2020
    3 phút đọc
    Chipmunk - Phần 6: Tạo Physics Body Cho Các Đối Tượng Có Hình Dạng Phức Tạp

    Thư viện xử lý vật lý Chipmunk cung cấp một số physics body đơn giản như hình vuông, tròn, chữ nhật ... Ngoài ra, Chipmunk cũng cung cấp một cơ chế cho phép xây dựng các đối tượng có hình dạng phức tạp. Quá trình này đòi hỏi khi khởi tạo đối tượng phải cung cấp một bộ các thông số để Chipmunk tạo ra một physics body tương ứng và số lượng thông số sẽ tỉ lệ thuận với độ phức tạp của hình được tạo. Nhờ có công cụ Physics Body Editor mà quá trình này đơn giản và trực quan hơn.

    Physics Body Editor Download

    Để thao tác với Physic Body được tạo ra, cần download source code ở cuối bài viết.

    Tạo Physics Body

    Sau khi các bạn download chương trình Physics Body Editor về, tiến hành giải nén và chạy file physics-body-editor.jar

    Hinh 1

    Click vào nút New project để bắt đầu tạo project sau đó chọn nơi lưu trữ project ở thư mục Resource của project mà tạo trước đó. Đặt tên project có dạng <tên_project>.json và chọn Save.

    Hinh 2

    Tiếp theo đó click vào nút New để import hình ảnh cần tạo Physics Body vào. Cửa sổ với 3 tùy chọn sẽ hiện lên như hình bên dưới. Tên của đối tượng cần được nhập chính xác và sẽ sử dụng lại sau này do đó nên thiết lập giá trị tên mang đủ ý nghĩa của đối tượng.

    Hinh 3

    Click vào nút "Create body from image”. Nếu việc load hình thành công thì hình ảnh sẽ hiện lên trên trục tọa độ Oxy của chương trình. Có 2 cách để nhận diện Physics Body cho đối tượng.

    Hinh 4

    Cách 1: Sử dụng chế độ Auto-trace

    Các này được đề xuất sử dụng trong trường hợp đối tượng hình ảnh có kích thước đủ lớn và đủ rõ để  tiết kiệm thời gian.

    Hinh 5
    1. Hull tolerance: Đây là số điểm nhận diện của Physics Body.
    2. Alpha tolerance: Độ chính xác trong việc nhận diện.

    Cách 2: Nhận diện thủ công

    Lần lượt click chọn từng điểm đại diện cho các đỉnh của hình ảnh cần nhận diện. Quá trình nhận diện kết thúc khi chọn lại điểm đầu tiên của quá trình, tạo thành 1 bao đóng cho đối tượng.

    Hướng dẫn sử dụng

    Cài đặt

    Import thư viện MyBodyParser được cung cấp ở cuối bài viết, thư viện có tác dụng đọc file cấu hình tạo ra bởi Physic Body Editor và tạo ra physic body tương ứng.

    Code minh hoạ

    auto spriteTexture = Sprite::create("CC.png");
    spriteTexture->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
    
    MyBodyParser::getInstance()->parseJsonFile("Coco.json");
    auto spriteBody = MyBodyParser::getInstance()->bodyFormJson(spriteTexture, "Coconut", PhysicsMaterial(0, 0, 0));
    spriteBody->setDynamic(false);
    spriteBody->setCategoryBitmask(0x00000000);
    spriteBody->setCollisionBitmask(0x00000000);
    spriteBody->setContactTestBitmask(0x00000000);
    spriteTexture->setPhysicsBody(spriteBody);
    this->addChild(spriteTexture);
    

    Giải thích

    • Dòng 1 - 2: Khởi tạo một sprite.
    • Dòng 4: Đọc file nhận diện Physics Body đã được chuẩn bị.
    • Dòng 5: Khởi tạo Physics Body cho đối tượng.
    • Dòng 6 - 9: Cài đặt các thông số cơ bản như cách cài đặt Physics Body cơ bản trước đây.
    • Dòng 10: gắn Physics Body cho sprite.
    • Dòng 11: Thêm sprite sau khi xử lý vào scene để sử dụng.

    Kết quả

    Ket qua

    Download

    MyBodyParser

    0 Bình luận
    Lập Trình Game

    Lập Trình Game

    Kiến thức, kỹ thuật, kinh nghiệm lập trình game.

    Đề xuất

    Làm Thế Nào Để Tạo Fixtures Cho Vật Có Hình Dạng Phức Tạp Trong Cocos2d-x?
    Hướng dẫn sử dụng phần mềm Physics Editor dùng để tạo Fixtures cho vật ...
    Chipmunk - Phần 3: Constraints
    Hướng dẫn ứng dụng constrains của Chipmunk trong việc mô phỏng xử lý các ...

    Khám phá

    Chipmunk - Phần 1: Giới Thiệu
    Giới thiệu thư viện xử lý vật lý Chipmunk và giới thiệu các khái niệm, ...
    Làm Sao Để Chia Tách, Cắt Một Đối Tượng với Box2D?
    Hướng dẫn làm sao để chia tách, cắt một đối tượng với thư viện vật lý ...
    Box2D - Phần 1: Giới Thiệu - Một Số Thuật Ngữ và Khái Niệm
    Giới thiệu engine xử lý vật lý Box2D, các khái niệm, cách thành phần ...
    Chipmunk - Phần 2: Một Số Thuật Ngữ Và Khái Niệm
    Giới thiệu về một số thuật ngữ và khái niệm khác trong Chipmunk như cách ...
    CBP-0: Giới Thiệu về Component Base Development
    Phương pháp lập trình Hướng thành phần (Component-base Development - ...
    Xử Lý Ảnh Với OpenCV: Các Phép Toán Hình Thái Học
    Giới thiệu những thuật toán cơ sở trong xử lý hình thái học, những thuật ...
    Các Kiến Thức Cần Chuẩn Bị Cho Buổi Phỏng Vấn C++
    Các kiến thức cần chuẩn bị cho buổi phỏng vấn C++ và cho công việc C++.
    Thành Phần Hoá Các Đối Tượng Trong Game Với Cocos2d-x
    Hướng dẫn thành phần hoá các đối tượng trong game với Cocos2d-x
    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020