Androidでアクトレーザー:其ノ陸

=前置き=

 e3roidの使い方を調べつつ、アクトレーザーの移植をしていく。

=カメラ=

 階層マトリクス的な構造になっていないことに気付かなかったので、かなり時間が取られてしまった。

 Flashなどでは階層マトリクスのように「親の座標+子供の座標」で実際の子供の表示位置が決定される。具体的には「親:(10,20)」「子:(10,20)」という座標の時は実際の子供の座標は(20,40)になる。
 しかしe3roidでは子供は親の座標を見ない。つまり「子:(10,20)」であるなら親の座標がなんであろうと表示位置は(10,20)である。一応、親子関係はあって「親を移動させたら子供も移動させる」ということは可能だが、階層マトリクスでは「親の座標だけ更新」であるのに対し、「親も子も位置を変更する」という処理になっている。

 これで何が困るかというと、「ステージに対するプレイヤーの相対位置」と「カメラから見た相対位置」がそれぞれ衝突してしまい、片方の変更がもう片方に影響してしまって表示がズレてしまう。Flashの時は「プレイヤーの位置→子の位置だけ変更すればOK」「カメラの位置→親の位置だけ変更すればOK」だったものの、今回は親の位置の変更が子の位置まで変更してしまうので「プレイヤーの位置→親の位置を考慮しつつ子の位置を変更」という処理にしなければならない。

 あとはレイヤーの位置の指定がFlashとはプラスとマイナスが逆だったりもしたので、トータルでわりと時間をくってしまった。

=ボタン=

 基本的にはSpriteを表示するのとあまり変わりがない。
 あとは「onTouchEventをOverrideして処理を書く」のと「scene.addEventListenerで登録する」だけでOK。
 ただ、「タッチを離したら解除」をやるのはonTouchEventだと範囲外になった時にムリだったので、今回はonSceneTouchEventの方をOverrideした。

=細かいこと=

 ステージのドット絵地形を1つずつ表示するようになったため、カメラをアップにしないと処理落ちするようになった。ということで、ひとまずアップ気味のカメラで作っていくことにする。ちゃんとステージが作れるかが少し心配。ダメっぽかったらなにがしかの高速化をする必要があるかも。

=e3roid雑感=

 階層の概念が想定と違ったり、ステージの作成に別ツールが必要だったりするものの、全般的には使いやすい。特に表示まわりがAS3(Flash)の時と同じ感じで使えるのが大きい。サンプルも多いので自分が必要とする機能の使い方が掴みやすい。

 自分のノートPCは非力なので、コンパイル時間(コードを書き終わってから実際に確認するまでの時間)が長くなってしまったものの、会社の時と同じ感覚で休憩したりネットで色々と読んだりできるのでそこまで気にはならない。

 プリミティブ描画(丸とか四角とかの描画)は四角しか対応していないようなので、その部分は試作が面倒かもしれない。一応、細く伸ばすことで線代わりにしたりできるけど。

=予定=

 AndroidでFBOが使えるかどうか怪しかったものの、なんとかそれっぽいものを見つけたので明日はそれを使ってレーザーの描画を行う予定。それが終わったら色々と調整をして試作は完了の予定。できれば明日中に全て終わらせたい。