Search…

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

30/09/20203 min read
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.

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

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024