almost 4 years ago

概要

Overlap2Dは、LibGDX 向けのレベル or UI エディタ。Unity とか他のフレームワークでは公式エディタがあるが、これは公式というわけでは無い。

チュートリアルを一通りやってみて感じたのは、強制終了などの不具合が気になるものの、横スクロールの2Dアクションをはじめとして、落ち物パズルゲーム等は効率的に開発できるように思われる。

Overlap2D エディタで作成したデータは、android または、core 直下の assets ディレクトリにエクスポートされたものがデフォルトで利用されるようになっている。もし、デフォルトのパス以外からデータ利用をしたい場合は、アプリ側にコードを追加する必要があるだろう。

また、Overlap2D のデータを利用するには専用ランタイムが必要になる。このランタイムはアプリで参照している libGDX のバージョンと同じにする必要がある。同じにして置かないと Overlap2D のランタイム側の方がバージョンが古いため、一部の libGDX API を利用できない問題が発生する。この問題は build.gradle の gdxVersion、box2dlightsVersion を修正することで解決できる。

Overlap2D ランタイムは、wiki で説明されるような、Box2d の初期化処理を請け負ってくれる。

ランタイム

Overlap2d上のアイテム

Overlap2 上のアイテムは基本的に、scene2d の Actor のサブクラスで、IBaseItem インターフェースを実装している。IBaseItem は、Box2D の要になる Body を持たせることができる。Body が無いアイテムは Box2D の効果を得られない。

動的にアイテムを追加する

Overlap2D では、通常、エディタでアイテムを配置して利用することを想定しているが、動的に追加させることもできる。動的に追加を行う場合は、事前に、アセットを Overlap2D 管理下にしておく必要がある。

Overlap2D で動的にアイテムを画面に追加したい場合は、sceneLoader.getRoot() に対して addItem() を実行する。addItem() は、引数のアイテムを sceneLoader.getRoot() の子として追加する。

Box2D による制御を行いたい場合は、エディタでフィジックスの編集を済ませた上で、 meshId と physicsBodyData を addItem() の前の段階で設定しておく必要がある。

    SimpleImageVO simpleImageVO = new SimpleImageVO();
    simpleImageVO.imageName = imageName;
    simpleImageVO.meshId = essentials.rm.getProjectVO().assetMeshMap.get(imageName);
    simpleImageVO.physicsBodyData = essentials.rm.getProjectVO().meshes.get(simpleImageVO.meshId + "").initialProperties;
← SQLiteStudio