0

私は spacemanager を使用しており、オブジェクトが衝突する力を計算して、ダメージに応じて音と適切なスピリッツを調整できるようにしたいと考えています。力の計算方法を教えてください。これが私がこのサイトで得たコードです。

if(!cpArbiterIsFirstContact(arb)) return;

cpFloat インパルス = cpvlength(cpArbiterTotalImpulse(arb));

フロート ボリューム = MIN(インパルス/500.0f, 1.0f); NSLog(@"インパルスは :%f",ボリューム);

NSLog(@" impluse x:%fy:%f", cpArbiterTotalImpulse(arb).x , cpArbiterTotalImpulse(arb).y); if(ボリューム > 0.05f){ [SimpleSound playSoundWithVolume:ボリューム]; }

私は POSTSOLVE メソッドでこれを持っています。BEGIN でも試してみましたが、印刷されるものはすべて 0 です。このサイトを調べたところ、これを行う必要があることがわかりました。smgr.space->elasticIterations = smgr.space->反復;

上記を実行した後でも、1 が表示されることもあれば、「nan」と表示されることもあります。私が知る必要がある基本的なことはありますか?

ありがとう

4

1 に答える 1

0

cpArbiterTotalImpulse() のドキュメントから:

衝突を解決するためにこのステップで適用されたインパルスを返します。これらの関数は、postSolve() コールバックからのみ呼び出す必要があります。それ以外の場合、結果は未定義です。

注: スペースで非推奨のエラスティック イテレーション設定を使用している場合、誤った結果が得られます。エラスティック イテレーションは不要になり、安全にオフにできるはずです。

于 2011-05-27T14:02:17.163 に答える