Nếu tôi diễn giải bình luận của bạn một cách chính xác, bạn muốn:
Có các hình dạng tùy ý trong Flash và tự động trích xuất hình dạng của các họa tiết này để sử dụng nó làm hình dạng va chạm trong Box2d
Thông thường, hình dạng va chạm là hình dạng đơn giản hơn nhiều so với tài sản đồ họa mà chúng đại diện (hiệu suất). Một mô hình 3d rất chi tiết có thể được biểu diễn chỉ bằng một hình trụ vát.
Một số cơ thể vật lý có thể được tạo tự động bằng thuật toán, nhưng đó cũng là cách phổ biến để vẽ / mô hình chúng bằng tay. Trừ khi bạn có một số lượng lớn các hình dạng khác nhau, rất có thể không đáng để thực hiện một thuật toán trích xuất hình dạng cho bạn.
Nếu bạn nhìn vào hình ảnh sau đây, bạn có thể thấy rằng một hình dạng rất phức tạp có thể được biểu thị bằng một số hình tròn và đa giác đơn giản (phải là lồi!). Vẽ các hình này bằng tay là (rất có thể) sẽ vượt trội hơn bất kỳ thuật toán nào bạn có thể nghĩ ra.
Bạn có thể vẽ các hình dạng này trong một công cụ vector như Illustrator hoặc Inkscape và xuất chúng sang SVG, có thể dễ dàng phân tích cú pháp. Hoặc sử dụng Flash và xuất các hình dạng dưới dạng FXG, đây cũng là định dạng có thể dễ dàng phân tích cú pháp.
Nếu tôi chưa thuyết phục được bạn và bạn thực sự muốn lập trình tạo các hình dạng từ các họa tiết của mình, thì đây là hai cách tiếp cận có thể hiệu quả.
- Kết xuất sprite thành bitmap (sử dụng BitmapData.draw ) và thực hiện vector hóa trên kênh alpha. Nếu hình dạng kết quả là lõm, tam giác nó.
- Sử dụng thư viện as3swf để phân tích tệp SWF hiện có trong flash. Bạn có thể trích xuất thông tin hình dạng từ đó. Vấn đề chính của bạn ở đây sẽ là: Tìm (các) hình dạng tạo thành đường viền của đối tượng của bạn. Chuyển đổi hình dạng này thành đa giác lồi.