Ich möchte erkennen, wenn man (Ball) ein anderes Objekt (Ziel) berührt und ich möchte den Impuls dieses Kontakts wissen.BulletPhysic: Kontakte Kraft/Impuls
Ich weiß, drei Möglichkeiten, Kontakte zu erkennen
gContactAddedCallback
oder
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
}
}
}
oder
Überprüfen Sie die Längen- und Winkelgeschwindigkeitsänderung. (Nicht klar, ob gab es Kontakt und welche Aufgabe gemacht, die Geschwindigkeit zu ändern, war es das Objekt oder Dämpfung, die Schwerkraft oder ein Kraftfeld.
Ich wünsche Kontaktinformationen zu haben, um Kontakte Impuls zu umfassen. ich, dass einige bemerkt Kontakt aufgelöst in 1 Rahmen Simulation andere nehmen 2 Frames und Impuls ist zweimal niedriger. (Ich habe es Debugging-Code.) Ich wäre perfekt, 1 Kontakt Benachrichtigung mit Gesamtimpuls.
Keine der Methoden, die ich aufgeführt geben mir vollständige Information für den Kontakt Irgendwann wird es ausgelöst, wenn der Ball in der Nähe des Ziels fliegt und es sogar nicht berührt
Was ist ein vorweggenommener Weg?
Diese Informationen könnten verwendet werden, um Trittschall zu erzeugen oder eine Animation zu starten, wenn die Energie der Kontakte hoch ist.
pt.getAppliedImpulse() – rraallvv
pt.getAppliedImpulse() Punkt - ich dieses verpasst! füge die Antwort hinzu und ich werde sie als solche markieren. Danke – Max