私は C++ を初めて使用するので、用語の使用が間違っていたらすみません。
ofxMSAPhysics という物理ライブラリを利用する openframeworks でアプリを作成しています。この目的のために、MSAPhysics の Particle3D クラスを継承する「particle」というカスタム クラスを作成しました。
ここでは、カスタム オブジェクトへのポインターを物理エンジンに渡します。
particle * p = new particle(ofVec3f(getTokenCoors(index)));
physics.addParticle(p);
私のカスタム クラスには、1 つのパーティクルが別のパーティクルと衝突するときに true に設定する、collide というパブリック メンバーがあります。これを行うには、Particle3D の仮想メソッドの 1 つをオーバーライドします。
void collidedWithParticle(ParticleT *other, ofVec3f collisionForce) {
collide = true;
}
ここで、ある粒子が別の粒子と衝突するタイミングを確認したいと思います。physics.getParticle(i)
は、物理エンジンからパーティクルを返しますがParticle3D
、カスタム パーティクル タイプではなく、 type の 1 つです。したがって、から返されたパーティクルをループするとgetParticle()
、「衝突」変数が含まれていません。
エンジンに追加されたカスタム パーティクルにアクセスする方法はありますか?
何か明確にできることがあれば教えてください。
編集: collidedWithParticle() は Particle3D の仮想メンバーです。オーバーライドされたメソッドに衝突をtrueに設定して、それが機能するかどうかを確認しました。