fslashtの日記: [Box2D] 2D物理エンジンを使ったみた (C#ソース付) 7
最近のゲームでは物理エンジンを搭載して物体の動きがやたらリアルです。
これをお手軽に実現できる2D専用の物理エンジンもあります。
Box2D
これは、もともとC++用のライブラリですが、JavaやFlash(ActionScript)、JavaScript等いろんな言語用に移植されています。
.Net版もあります。
box2dx -Box2DX is a C# port of Box2D - 2D Physics Engine.-
というわけで、C#から呼び出して動かしてみました。
→スクリーンショット
なかなかリアルにうごきますでしょ?
プログラムは↓からダウンロードできます。
http://dokokano.net/~fslasht/warehouse/programs/testBox2d_20090318.zip
【動作環境】
Windows用。
.Net Framework 2.0が必要です。
【操作方法】
画面を左クリックすると四角、右クリックすると丸が、でてきます。
それぞれ物理法則にしたがって動きます。
【開発について】
C#で開発(VS2008EE)してます。ソースつき。
うまくビルド出来ないときは「Box2DX.dll」を参照に加えてみてください。
● Box2Dをはじめよう
僕の場合、以下のような流れで調べていきました。
・入門編
→Box2DでActionScript物理プログラミング:第1回 Box2Dを使ってみよう (技術評論社)
Flashでの利用を前提とした記事ですが、Box2Dの考え方や出来ることがよくわかります。
・ライブラリをダウンロードしよう
→Downloads - box2dx - Google Code:
.Net版のプロジェクトページからダウンロード
「Box2DX-2.0.1.3-r175-RC-DemoSuite.zip」
・サンプルを動かしてみる
DLLとサンプルプログラムが入ってます(Windows用)。
とりあえず動かしてみよう。
・HelloWorld.exe エンジンの動作結果を文字だけで表示
・TestBed.exe いろんなシーンのサンプルを動かせます。タノシス
・ソースを見てみよう
HelloWorld.exeのソースは、ブラウザでも見られます。→Program.cs
地面とオブジェクトを定義すると、オブジェクトが地面に落ちる。
・・・というのを座標表示します。
グラフィックはでませんがソースみながら実行結果をみるとわかりやすいかも。
ソースは結構短いです。
・マニュアル
公式マニュアル(英語)はこちら
Box2D v2.0.2 User Manual
↓のブログで翻訳中。こちら大変参考になりました。
Box2Dユーザマニュアル
こんな感じで、HelloWorld.exeのソースを改造して、グラフィックつけたりしていっています。
僕のプログラムはソース付なので参考になるといいなあ。いろいろ改造してみてちょ。
これをつかって何かゲーム作ってみたいですね。
ねーねー、 (スコア:1)
それ、角エネルギー使える?
Re:ねーねー、 (スコア:2)
角エネルギーってどういうのだっけ。
最初に↓とかってやっておけば、回転してる物体も出せます。
body.SetAngularVelocity(90);
あと、ジョイント(今回は実装してない)にモーターを仕込めるので、車とかも作れます。
剛体シミュレーションなので、バネとかは無理です。
Re:ねーねー、 (スコア:1)
phunの角同士を重ねて設置する事でエネルギーを高密度に蓄積する「技術」だよ。つつくと「どかん」といく。
←参考
Re:ねーねー、 (スコア:2)
phun用語かw
Box2Dの場合、オブジェクトが最初から重なってる場合は、にゅるーって離れるような動きをします。
爆発的には動かないはず
Chrome Experiments (スコア:1)
GoogleがChrome ExperimentsでJavaScriptエンジンのパワーを誇示 [techcrunch.com]しており、
「Google Gravity」はJavaScriptの物理エンジンBox2DJSを利用している [itmedia.co.jp]そうな。
#一方、マイクロソフトはオレオレベンチアークでIE8の速さを誇示 [mycom.co.jp]した。
Re:Chrome Experiments (スコア:2)
Google様も使ってるですか~
Box2DはJavaScriptからも使えるのがいいですよね。
Re:Chrome Experiments (スコア:1)
○ベンチマーク
×ベンチアーク
orz