STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ
    Nội dung
    0
    0
    Chia sẻ

    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.

    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo 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 - 2021