開発

【Flutter】Flutterでちょっとした物理演算を使う【box2d/forge2d/spritewidget/4s4ki】

こんにちは。

スマホアプリをメインに開発している子育てハードモードのロッキーカナイです。

Flutterでちょっと物理演算を使いたいといった状況が発生しましたので、実装した内容を記事にしてみました。

背景

物理演算って使う状況としては2Dゲームが思い当たると思うのですが、その場合はflameを使う必要があります。

flameはがっつりゲーム作れるものなのでそこまではしたくはないという状況の場合には最適かと思います。比較的簡単に作る事ができましたので紹介します。

プラグインについて

主に使うプラグインはforge2dspritewidgetです。

forge2d : 物理演算エンジンのbox2DをDartへ移植したもので、flameというゲームエンジンのチームがメンテナンスしている物理演算ライブラリです。

spritewidget : Flutterを使って複雑で高性能なアニメーションや2Dゲームを構築するためのツールキットです。

※Flutterのプラグインでbox2dが存在し、動作する事も確認しましたが(box2d0.4.0/FutterSDK2.0.3現在)、非推奨ですのでforge2dを使用します。

 

やること

いくつかの泡を画面中央付近まで移動させる。泡は交わらずお互い反発させたいので物理演算を使用するという感じ。

出来上がったものがこの画面頭あたりのgif画像になります。実際にはもっとスムーズに動くので、mp4も用意しました。

ちなみに、SpotifyAPIを使ってプレイリストのトラックを取ってきてアルバム画像を泡にしてます。

 

コード

コードは以下の通りです。

FutterSDK2.0.3

 

物理の動き制御の部分は結構適当なので、物理演算をFlutterで使う場合の大枠として参考にしていただければと思います。

さいごに

今回登場した私のおすすめプレイリスト

ABOUT ME
ロッキーカナイ
ロッキーカナイ
SwiftやObjective-CでiOS開発や、Flutterを用いたiOS/Androidアプリ開発、PHPでLaravelを使ったWebアプリ開発などをしてます。趣味は猫と戯れる事、キックボクシングにハマってます。ちなみに名前のロッキーカナイは以前よく昼飯を食べてた所。