Tôi đang làm việc trên trò chơi đầu tiên của tôi bằng cách sử dụng libgdx với box2d. Tôi đang sử dụng trình kết xuất gỡ lỗi để kiểm tra các đối tượng của mình. Tôi tạo ra một số chiếc xe như đối tượng. Mỗi chiếc xe có một thân chính, đó là một đa giác lớn 6 điểm (khoảng 1 mét dài, cao 0,7 mét), và có 2 bánh xe gắn liền với khớp nối lại.Va chạm trong Libgdx box2D không cho một số cơ quan
Xe chính có pháo và súng máy kèm theo, cũng thông qua khớp nối khớp.
Vấn đề tôi đang gặp phải là phần lớn xe không gây va chạm như dự định. Khi 2 xe ô tô đánh nhau, họ bị chồng lấn thì như thế này:
Một số lưu ý:
- Các bánh xe và pháo (hình nhỏ) đang làm va chạm tốt. Khi bánh xe chạm vào các cơ quan đang dừng
- Nếu tôi phát hiện va chạm qua mã, sự va chạm thực sự xảy ra
- Tôi đã thử với vật nhỏ hơn (viên đạn bắn từ súng máy) và tôi đặt đối tượng là "isBullet "tài sản cho đúng như tôi đã thấy trong một bài khác nhau (not proper collision in box2d), nhưng có kết quả tương tự (Viên đạn được vòng tròn màu đỏ):
Dưới đây là đoạn code tôi đang sử dụng để tạo ra các cơ quan:
protected Body createBody(Material material, Shape shape, BodyType type, WorldWrapper world)
{
BodyDef bodyDef = new BodyDef();
bodyDef.type = type;
bodyDef.position.set(initialPosition);
Body body = world.createBody(bodyDef);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.density = this.material.getDensity();
fixtureDef.friction = this.material.getFriction();
fixtureDef.restitution = this.material.getRestitution();
fixtureDef.shape = shape;
body.createFixture(fixtureDef);
return body;
}
Chiếc xe đi về phía trước sử dụng động cơ trên các bánh xe khớp revolute, được xây dựng như thế này:
public void goForward()
{
for (RevoluteJoint joint : wheelJoints)
{
joint.enableMotor(true);
joint.setMotorSpeed(-this.engineSpeed);
joint.setMaxMotorTorque(this.engineTorque);
}
}
Tôi đang sử dụng các giá trị sau:
Density = 2500;
Restitution = 0;
Friction = 0.1;
BodyType = Dynamic;
Tôi đang sử dụng một 1/60 giây bước trên thế giới, với velocityIterations = 6 và positionIterations = 2
Bất kỳ ý tưởng nào về những gì tôi đang thiếu ở đây?
Cảm ơn! Tôi sẽ cố gắng hôm nay. Btw Tôi đã tạo dự án này cách đây 3 tuần và tôi đã sử dụng chức năng cập nhật libgdx trong cài đặt thực thi. Các thay đổi có gần đây hơn không? – Charbel
Từ những gì tôi nhìn thấy trên GitHub, thay đổi đã được thêm vào ngày 22 tháng 3. Phiên bản phát hành libgdx mới nhất là từ ngày 16 tháng 3, do đó, hiện tại chỉ trong phần đêm. – Shinni
Tôi đã thay đổi đa giác để có hình dạng lồi và đó là vấn đề có hiệu quả. Tôi sẽ sử dụng đề xuất hình chữ nhật 2. Cảm ơn! – Charbel