Desidero rilevare quando una (sfera) tocca un altro oggetto (obiettivo) e desidero conoscere l'impulso di quel contatto.BulletPhysic: contatti forza/impulso
so tre modi per rilevare i contatti
gContactAddedCallback
o
int numManifolds = m_dynamicsWorld->getDispatcher()->getNumManifolds();
for (int i=0;i<numManifolds;i++)
{
btRigidBody* obA = static_cast<btRigidBody*>(contactManifold->getBody0());
btRigidBody* obB = static_cast<btRigidBody*>(contactManifold->getBody1());
// May be there is contact obA and obB
btPersistentManifold* contactManifold = m_dynamicsWorld->getDispatcher()->getManifoldByIndexInternal(i);
int numContacts = contactManifold->getNumContacts();
for (int j=0;j<numContacts;j++)
{
btManifoldPoint& pt = contactManifold->getContactPoint(j);
if (pt.getDistance()<0.f)
{
// One contact point is inside of another object
// But some contacts are ignored
}
}
}
o
Controllare la lineare e variazione di velocità angolare. (Non è chiaro se c'è stato un contatto e quale oggetto ha effettuato la modifica di velocità, è stato oggetto o di smorzamento, gravità o qualche campo di forza.
Vorrei avere le informazioni di contatto per includere i contatti impulso. Ho notato che alcuni contatto risolto in 1 frame simulazione altro take 2 frame e impulso è due volte inferiore. (Ho ottenuto il debug del codice.) Sarei perfetto per ottenere 1 notifica di contatto con impulso totale
Nessuno dei metodi che ho elencato mi danno informazioni complete per il contatto Qualche volta spara quando la palla vola vicino al bersaglio e anche se non la tocca.
Qual è il modo previsto per farlo?
Tali informazioni potrebbero essere utilizzate per riprodurre il suono di impatto o avviare un'animazione se l'energia dei contatti è elevata.
pt.getAppliedImpulse() – rraallvv
pt.getAppliedImpulse() - ho perso questo! aggiungi una risposta e la contrassegnerò come tale. Grazie – Max