2011-10-02 38 views
78

Có một vài cổng khác nhau của Box2D cho JavaScript. Cái nào là tốt nhất?Tôi nên sử dụng thư viện JavaScript Box2D nào?

  • Box2DJS - "chuyển đổi từ Box2DFlashAS3_1.4.3.1 một cách tự động"

  • Box2Dflash 2.0 ported to JavaScript - "một cuộc tấn nasty lớn mà chỉ xảy ra để làm việc"

  • box2dweb - "một cổng của Box2DFlash 2.1a sang JavaScript. Tôi đã phát triển một trình chuyển đổi ActionScript 3-to-JavaScript để tạo mã "

  • HBehrens/box2d.js - "một bản JavaScript của Box2D 2.1a"(Added Tháng Mười Một 21, 2011)

  • kripken/box2d.js -" một cổng trực tiếp của động cơ vật lý Box2D 2D sang JavaScript, sử dụng Emscripten "(Đã thêm ngày 24 tháng 9 năm 2013)

Bất kỳ ý tưởng nào sử dụng phiên bản http://chrome.angrybirds.com/, nếu có?

+0

Nó thậm chí không phải là một cổng Box2D. Ví dụ: [Matter.js] (http://brm.io/matter-js/) và [p2.js] (https://github.com/schteppe/p2.js) cả hai dường như khá chắc chắn. – Thomas

+0

@Thomas Tôi đồng ý. Nhưng hãy nhìn vào thời điểm câu hỏi được hỏi. Vào thời điểm đó tôi tin rằng Matter.js và p2.js vẫn chưa xuất hiện. – newguy

+0

Có lẽ, nhưng tôi nghĩ câu hỏi này xuất hiện trong Google ...không có hại cố gắng để giữ cho SO đến nay với con trỏ hữu ích cho những người đến sau khi bạn :) – Thomas

Trả lời

71

Lưu ý cho người đọc!

Câu hỏi này ban đầu được hỏi và trả lời vào năm 2011, nhưng tôi sẽ cố hết sức để cập nhật!

Đây là những gì tôi đã tìm thấy:

  • kripken/box2d.js là một cảng Box2D sử dụng Emscripten và hoạt động tốt và nhanh. Tôi đã sử dụng cá nhân này với thành công lớn.
  • planck.js là cổng mới nhất và được viết từ mặt đất lên trong JavaScript
  • Box2DJS là một cổng của Box2DFlash 1.4.3.1. box2dweb là một cổng phiên bản 2.1a.
  • Box2DJS công trình "như một module CommonJS mà không cần bất kỳ sửa đổi nào cả" [1]
  • Box2DJS "không up-to-date và bạn phải nhập khẩu một lượng lớn các tập tin JavaScript trong mỗi dự án" [2]
  • box2dweb được chứa trong một tệp duy nhất [2]
  • box2dweb là "một cổng mới hơn và có ít sự cố hơn" so với Box2DJS [3]. Tuy nhiên, việc chuyển đổi có thể giới thiệu các sự cố mới [4].
  • Box2DJS phụ thuộc vào Prototype nhưng box2dweb không [5]
  • Seth Ladd đã thúc đẩy box2dweb với các ví dụ trên blog của mình [6]
  • Không ai dường như được sử dụng thay thế thứ ba.
  • Ngoài ra còn có các trình mô phỏng vật lý không phải là dựa trên Box2D. Hãy xem Matter.jsp2.js

Ngoài ra còn có a similar discussion on gamedev.stackexchange.com.

Tôi muốn nói rằng người chiến thắng là kripken/box2d.js.

+0

box2d không được cập nhật như box2dweb. rất nhiều lớp lõi bị thiếu trong tệp đã được rút gọn. – dopatraman

+1

Cá nhân tôi đã sử dụng box2dJS trong một dự án chuyển trò chơi box2D iOS hiện có của tôi. Những gì tôi thấy với sự khác biệt phiên bản là một số mã từ iOS hoạt động không hoạt động trong phiên bản JS và dev dừng lại. Sau đó, tôi đã sử dụng nửa tuần để thay đổi tất cả các mã thành box2dweb và mọi thứ hoạt động tốt giống như trò chơi box2d iOS của tôi. Vì vậy, sự khác biệt phiên bản quan trọng rất nhiều. – Makzan

+0

cổng emscripten là khá mát mẻ, nhưng lần cuối cùng tôi sử dụng nó tôi thấy nó là lỗi (bao gồm cả đóng băng ngẫu nhiên), và rất khó để gỡ lỗi, do bản chất của emscripten. – bunnyhero

12

Câu hỏi này và câu trả lời hay nhất của nó là từ năm 2011. Một tùy chọn mới gần đây là box2.js, bản dịch Emscripten của mã C++ thành Javascript. Tính đến tháng 8 năm 2013, nó cập nhật hơn các cổng khác mà tôi đã tìm thấy và các bản demo dường như hoạt động.

+0

Cảm ơn @Nelson, tôi đã thêm nó vào câu hỏi –

+0

Tôi đã không sử dụng bất kỳ của các libs này, nhưng box2d.js và "fun with VTables" không có vẻ thú vị. – cubuspl42

6

lẽ là nơi tốt nhất để giữ cho đến ngày với các cảng Box2D JavaScript là diễn đàn chính thức: http://box2d.org/forum/viewforum.php?f=22

JSBox2D trông giống như một khởi đầu tốt.

Tôi chắc chắn sẽ xem xét Matter.js, có vẻ như rất được xây dựng và rất nhanh. Tôi đi xuống con đường này. http://brm.io/matter-js

+1

Matter.js hoạt động như thế nào cho bạn? –

0

Box2DWeb hỗ trợ hầu hết API từ C++ Box2D gốc trừ các hình dạng chuỗi. :/

Đây là Javascript Box2D được sử dụng rộng rãi nhất. Nếu bạn cần tài liệu API cho Box2DWeb, hãy kiểm tra Box2DFlash. http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb được tạo tự động từ Box2DFlash bằng trình biên dịch. Vì vậy, API là như nhau.

Tôi nghi ngờ Box2DWeb sẽ nhận được bất kỳ cập nhật nào trong tương lai nữa khi Box2DFlash không hiển thị hoạt động nào nữa. Bạn có thể thấy sự hợp lý của tác giả về lý do tại sao ông quyết định không viết một cổng Box2D -> Box2DWeb trực tiếp.

https://code.google.com/p/box2dweb/wiki/Roadmap

+0

Các ứng cử viên tiếp theo cho Box2D cho đến nay là PhysicsJS. wellcaffeinated.net/PhysicsJS/ (2cents của tôi) – Vennsoh

+0

Google đã phát hành một plugin, LiquidFun (Go google) trong I/O 2014. Bạn sẽ cần Box2D v2.3 để sử dụng nó. Nó khá là tuyệt vời. – Vennsoh

7

LiquidFun (Với JS Bindings)

LiquidFun là, vào thời điểm đó tôi gửi bài này, cảng gần nhất để JS. Nó có tất cả các tính năng của Box2D và các tính năng vật lý chất lỏng. Nó được chuyển bằng cách sử dụng emscripten, vì vậy hiệu suất là phong nha.

google/liquidfun

google/liquidfun/tree/master/liquidfun/Box2D/lfjs

+0

Gần đây tôi đã xem qua điều này và có vẻ lý tưởng cho việc mô phỏng nước chảy qua các đường ống vào trong các bồn chứa và van vv. Nó sẽ là một giải pháp tốt cho một dự án mà tôi đang xem xét. Có bất kỳ hướng dẫn ra có đặc biệt là làm thế nào để thực sự có được thư viện vào javascript của tôi. Tài liệu có vẻ hơi khan hiếm –

Các vấn đề liên quan