2012-06-04 46 views
8

Tôi sử dụng box2dweb. Tôi đang cố gắng phát triển một trò chơi. Tại một số điểm tôi cần phải tìm ra các điểm liên lạc giữa một "Circle" và "Box". Tất cả tôi biết là nó có thể được thực hiện bằng cách sử dụng b2ContactListener. Chúng tôi có thể nhận dữ liệu liên lạc bằng cách triển khai b2ContactListener sử dụng Sự kiện sau khi giải quyết. Hãy giúp tôi!Box2dweb - Va chạm Contact Point

+1

này có thể giúp: http://www.iforce2d.net/b2dtut/collision-anatomy – iforce2d

Trả lời

16

Bạn đang đi đúng hướng có những sự kiện khác nhau mà bạn có thể móc vào với b2ContactListener:

var b2Listener = Box2D.Dynamics.b2ContactListener; 

//Add listeners for contact 
var listener = new b2Listener; 

listener.BeginContact = function(contact) { 
    //console.log(contact.GetFixtureA().GetBody().GetUserData()); 
} 

listener.EndContact = function(contact) { 
    // console.log(contact.GetFixtureA().GetBody().GetUserData()); 
} 

listener.PostSolve = function(contact, impulse) { 
    if (contact.GetFixtureA().GetBody().GetUserData() == 'ball' || contact.GetFixtureB().GetBody().GetUserData() == 'ball') { 
     var impulse = impulse.normalImpulses[0]; 
     if (impulse < 0.2) return; //threshold ignore small impacts 
     world.ball.impulse = impulse > 0.6 ? 0.5 : impulse; 
     console.log(world.ball.impulse); 
    } 
} 

listener.PreSolve = function(contact, oldManifold) { 
    // PreSolve 
} 

this.world.SetContactListener(listener); 

Chỉ cần loại bỏ mã postSolve và tùy thuộc vào những gì bạn cần làm móc vào các sự kiện thích hợp.

Seth ladd có một số bài viết hay về blog của anh ấy về va chạm/phản ứng với họ. Đây là nơi tôi nhặt các bit này để tín dụng đầy đủ đến với anh ta.

Tôi hy vọng điều này sẽ hữu ích.

Cảm ơn, Gary

+0

Cảm ơn người đàn ông. Bây giờ tôi có thể nhận được các điểm liên lạc chính xác. – Shekhar

+0

Tôi đã viết một blog trên đó. Nếu bạn muốn bạn có thể kiểm tra xem nó ra. http://thenightowl.xp3.biz/ – Shekhar

+0

Cuối cùng! CollisionHandler giải thích trong Javscript –

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