Unityで磁力をシミュレートする。


はじめに

Unityでは、標準機能で重力や光などの物理現象はシミュレートできますが、磁力のシミュレートは出来ません。それを可能にする無料アセットがMagnetodynamicsです。

作者の方は物理がご専門のようで、マニュアルにもかなり本格的な説明があります。ただ、残念ながら大分古いアセットなので、現行のUnityで使おうとすると一部のシーンでは修正が必要ですが、そのままでも遊べるシーンもあるので、簡単に紹介します。

BallMagnetsTutorialで遊んでみる

とりあえず、一番シンプルなボール型磁石のチュートリアルを見てみましょう。アセットをインポートして(その際、API Updateをするよう指示が出るので、それに従ってください)、BallMagnetsTutorialシーンを開いてください。

そうすると、下のようなNS極のあるボール型磁石が出てきて、それをマウスで移動できます。

これに対して、マニュアルの指示に従ってプレハブを追加します。まず、Assets\MagnetodynamicsにあるMagneticDipoleプレハブをBallMagnet-1の下に配置してください。

次に、位置合わせのため、BallMagnet-1、MagneticDipoleの双方のTransformのPosition, Rotationを(0,0,0)にしてください。そうすると、二つのオブジェクトの軸がそろうはずです。それができたら、BallMagnet-1を少し上に移動させて、机にめり込んでない位置に置いてください。

次に、ElectromagneticFieldControllerプレハブをシーンに配置してください。これは、BallMagnet-1の下である必要はありません。

次に、BallMagnet-1のコピーをたくさん作って、シーンに適当に配置してください。そしてシーンを実行すると、お互いが引っ付くようになります。

おわりに

今回は、簡単にBall magnetについて説明しました。ほかにも、磁力線を表示するチュートリアルなど色々面白いのがありますので、機会があればまた紹介します。