Uso box2dweb. Estoy tratando de desarrollar un juego. En algún momento necesito averiguar el punto de contacto entre un "Círculo" y "Caja". Todo lo que sé es que se puede hacer usando b2ContactListener. Podemos recibir datos de contacto implementando b2ContactListener usando Post-Solve Event. ¡Por favor ayuda!Box2dweb - Punto de contacto de colisión
8
A
Respuesta
16
Está en el buen camino hay varios eventos que se pueden enganchar en la 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);
Basta con retirar el código postSolve y dependiendo de lo que tiene que hacer gancho en los eventos adecuados.
Seth ladd tiene excelentes artículos en su blog sobre colisión/reacción a ellos. Aquí es donde recogí estos bits, así que el crédito total recae en él.
Espero que esto ayude.
Gracias, Gary
Cuestiones relacionadas
- 1. detección de colisión y colisión de respuesta
- 2. Predicción de colisión Circle-Circle
- 3. grupos de colisión box2d
- 4. Detección de colisión Chipmunk
- 5. zend: colisión de parámetros
- 6. detectar la colisión inicial de dos cuerpos box2d sin colisión continua
- 7. ID de contacto único
- 8. Contacto de Gmail api
- 9. SHA1 demo de colisión/ejemplo
- 10. 2D Detección de colisión continua
- 11. detección de colisión en cocos2d
- 12. Javascript canvas detección de colisión
- 13. Obtener ubicación de contacto original de UIPanGestureRecognizer
- 14. Detección de colisión en el juego Cocos2d?
- 15. Eliminar un objeto cuando ocurre una colisión
- 16. obtener contacto problema de rendimiento
- 17. Recuperando grupo de contacto particular
- 18. colisión Puntos en GJK
- 19. Detección de colisión de círculo rápido
- 20. Buenas referencias de respuesta de colisión 2D
- 21. genéricos de fantasía captura de colisión
- 22. Canvas HTML5: detección de colisión de mouse y polígono
- 23. Esfera - esfera detección de colisión -> reacción
- 24. Plataformas 2D AABB problemas de colisión
- 25. QuadTree para detección de colisión 2D
- 26. OpenGL GL_SELECT o detección de colisión manual?
- 27. ¿Cómo se usa la colisión basada en círculos con los métodos de colisión grupal en Pygame?
- 28. Evento de contacto prolongado de Android
- 29. Notificación de cambio de contacto nativo
- 30. Prevención/reducción de spam - ¿Formulario de contacto?
Esto podría ayudar: http://www.iforce2d.net/b2dtut/collision-anatomy – iforce2d