2017-12-13 16 views
0

私はcocos2d-xとchipmunkを使ってネットワークデモゲームを開発しています。 1つのデバイスの1つのスプライトにI(ApplyImpuse())を実行し、そのVec2の力を他のデバイスに送信し、同じインパルスをスプライトに適用すると、シミュレーションは最初のデバイスとかなり異なります。Cocos2d物理学はすべてのデバイスで同じではありません

さまざまなデバイスで何度もテストします。

注:私はスクリーンに触れると、スプライトにはApplyImpulse()だけでカスタム更新メソッドを使用しません。

誰でもこの問題を説明し、解決策を提案できますか?

私がBox2Dに切り替えた場合、この問題は解決されますか?

ありがとうございました。

+0

これが原因でデバイスのサイズのものでなければなりません。インパルスはデバイスの大きさに比例して適用できます。 – Darvydas

答えて

1

いいえ多くのデバイスで確定的なシミュレーションを行う唯一の方法は、フィジックスライブラリを使用して(または書き換えて)固定小数点数学を使用し、次にもたらすすべての制限に対処することです。

異なるCPU、コンパイラ、プラットフォーム、またはほとんどのマイナーチェンジコードからの決定的な結果を得ることは、ほとんど不可能です。たとえば、a*b + a*cはコンパイラによってa*(b + c)に簡略化できますが、浮動小数点数の精度は限られているため、結果はまったく同じではありません。

からくりのメイクは、バニラシマリスを使用して始まったが、最終的に固定されたポイントを使用して、それのかなりの部分を書き直し:http://www.moddb.com/members/kevryan/blogs/the-butterfly-effect-deterministic-physics-in-the-incredible-machine-and-contraption-maker

関連する問題