2Dの物理エンジンとして Box2D が有名ですが、その軽量版である Box2D-lite の Go言語版 go-box2d-lite があったので、ebiten と組み合わせてみました。
コード
go-box2d-lite のリポジトリに使用例のコードがありますが、こちらは go-sdl2 を使用しています。
これを、そのまま ebiten を使うように書き換えてみます。
書き換えで一番難しいところは go-box2d-lite の組み込みより、サンプルで使われている画面に線を描画するSDLのメソッドに対応するものが ebiten には無く、これをどうしようかと四苦八苦していたのですが、
https://t.co/hjyEt7OipV Added DrawLine and DrawRect. These are intended to be used for prototyping. Don't expect too much.
— Hajime Hoshi (星一) (@hajimehoshi) August 13, 2017
とのことで、ebitenutil.DrawLine
というメソッドが追加されたので簡単に書き換えることができました。
実行結果
サンプルを書き換えただけですが、物理エンジンは色々と夢が広がっていいなーと思いました。
課題
- オリジナルのサンプルコードの描画の座標系が独特なので、素直なXY座標指定に書き直したい
-
ebitenutil.Drawline
はあくまでプロトタイプ用途のメソッドなので、これをそのまま本番稼働には使用しないほうが良さそう- そのため実際のゲームでは、使用する画像素材のXY座標と go-box2d-lite の Body や Joint 構造体のXY座標を上手く対応させる仕組みが必要になる