Làm thế nào để bỏ qua va chạm vật lý của một số đối tượng trong box2d


8

Tôi biết điều này nghe có vẻ ngớ ngẩn nhưng tôi muốn một số đối tượng theo dõi vật lý trong khi những người khác không va chạm vào nhau.

Tôi đã cố gắng để đạt được chúng bằng cách thiết lập vị trí của họ độc quyền. Nhưng sau đó nó sẽ bỏ qua tất cả vật lý.

Là những gì tôi đang cố gắng để làm thậm chí có thể?


Tôi không chắc chắn những gì bạn muốn đạt được, nhưng cơ thể động học cũng có thể giúp đỡ.
ThatOneGuy

Câu trả lời:


11

Đọc về lọc va chạm trong hướng dẫn Box2D:

Lọc va chạm cho phép bạn ngăn va chạm giữa các đồ đạc. Ví dụ, giả sử bạn tạo một nhân vật cưỡi xe đạp. Bạn muốn xe đạp va chạm với địa hình và nhân vật va chạm với địa hình, nhưng bạn không muốn nhân vật va chạm với xe đạp (vì chúng phải trùng nhau). Box2D hỗ trợ lọc va chạm như vậy bằng cách sử dụng các danh mục và nhóm.

Box2D hỗ trợ 16 loại va chạm. Đối với mỗi vật cố bạn có thể chỉ định nó thuộc về loại nào. Bạn cũng chỉ định những loại khác mà vật cố này có thể va chạm với. Ví dụ: bạn có thể chỉ định trong trò chơi nhiều người chơi rằng tất cả người chơi không va chạm với nhau và quái vật không va chạm với nhau, nhưng người chơi và quái vật sẽ va chạm với nhau

Liên kết với hướng dẫn ở đây . (Tìm kiếm Lọc).


2

Nếu bạn có hai loại đối tượng không nên va chạm với nhau, thì các công việc sau đây.

var kindA = -1;
var kindB = -2;

var bodyDef = new b2BodyDef();
var body = world.CreateBody(bodyDef);
var fixtureDef = new b2FixtureDef();
fixtureDef.shape = new b2Shape();
fixtureDef.filter.groupIndex =
    entity instanceof EntityA
        ? kindA
        : kindB;
body.CreateFixture(fixture);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.