BitmapFontクラス

BitmapFontクラス
Bitmapfontクラスは
フォーマットで作成された
fntファイルからビットマッブフォントを作成するクラス
コンストラクタの引数は
TextureManager
AssetManager
asset
のフォルダーからみたフォントファイルつまり、拡張子が .fnt
への絶対パスになる
インスタンス化した後は
load()
を呼ぶのを忘れないように注意

ビットマップフォントについて

スコアを表示するテキストの実装
assetsへfontフォルダーを作成して、
そこに画像ファイルを配置
あと、フォントファイルも配置しておく
拡張子が
.fntファイルは
pngファイルとセットで
ビットマップフォントを構成するファイルて
ゲーム開発によく使われる
ゲームで使うフォントを前もって
pngへ埋め込み、ゲーム中で利用する
このため、通常のテキストと異なり
自由にフォントや効果を使えるけど
使う文字を前もって登録しておかないといけないため
日本語のように大量の文字を含む言語は向かない
RSSリーダーやToDoリストアプリなどは
どんな内容やテキストを扱うかは
開発段階で断定できないため、全ての文字を含める
ゲームの場合は
使う文字を限定できるため
できるだけビットマップフォントを使う
私の場合、開発環境はuhuntu なため
ubuntu bitmapfont create
て検索してみました
使いやすいツール、フリー素材などあれば
リンクを張ろうと思います

重複画像の設定

z-indexは重なりの順序を表す数値で
重なったときに数値が大きいほど
上層で表示される
つまり、上に画かれる
sortChildren()で
z-indexを反映させる
画面要素の重なり順についてメモしておくと
sortChildren()は
各Spriteなど画面要素に設定z-indexを反映させる関数
設定されたz-indexのとおりに
正しく表示されていても
新しくattachChildされると
z-indexの設定の有無に関わらず
強制的に一番上に表示されるため
要素を追加するごとに
毎回sortChildren()

z-indexを反映する必要がある

TimerHandler クラス

Timerhandler クラスは
処理が行われるまで送らせる時間と
行なう処理を組み合わせて定義するクラス
第1引数
float pTimerSeconds
処理の実行を送らせる秒数
1を設定すると、1秒後に処理する
第2引数
boolean pAutoReset
処理の自己羽後自動的にもう一度タイマーをしかけるかどうか指定
true なら指定されたじかんごとに無限ループ
省略すると false 扱いになりループなし
第3引数
ITmerCallback pTimerCallback
処理内容記述

AnimatedSpriteクラス

AnimatedSpriteクラスは
通常のTetureRegion クラスではなく
タイル状に画像が配置されたTextureRegion である
TiledTextureRegion クラスの
インスタンスを使う
読み込んだ画像を
パラパラアニメのように再生できる
このパラパラアニメをループさせることで
キャラクターやオブジェクトを表現する
コインの画像がアニメーションする
とはいっってもその場でぐるぐるまわるだけだけど
とりあえず、1枚の画像だと飛んでいる感じがしないから
AnimatedSprite() で3種類の画像を順に表示して回転しているように見せかけている
基本的にゲームは見せかけの動きが多い
TiledTextureRegion クラス
TiledTextureRegion クラスは、
インスタンス化時、
コンストラクタを最後の2つの引数が画像をマス状として見た時の
横のマス数、
縦のマス数
となる
TextureRegion は画像をそのまま描画するけど
TiledTextureRegion は
与えられた横のマスの数
縦のマスの数
に従って同じサイズにリソースを分割して
別々に保持する
BitmapTextAtlasTextureRegionFactory.createfileFromAsset(
tta,
gameActivity,
fileName,
0,
0,
1, 横のマスの数
3 縦のマスの数
);
となる
スマートフォン向けのweb アプリを作る時に
HTML5で画像を読み込むときに
すべての絵を1つのファイルにまとめておいて
そこから切り抜いて使うのと似たような作業になる
IOnSceneTouchListener インターフェースを実装したクラスでは
タッチイベントを受けとることができるようになる

AndEngine でのゲーム開発のポイントメモ

AndEngine でのゲーム開発のポイントメモ
setTouchAreaBindingOnActionDownEnabled(true);
を呼び忘れると
ボタンをタップしたままボタン外へスライドしたときに
画面が戻らなくなる
また、これを設定していないと
Sceneでタッチ&リリースという操作の検出ができない
このため
trueにしておく
開発中または回初子に
ゲーム描画エリアサイズ変更の対処ができるように
座標は絶対値ではなく
相対値で指定する
これなら、後から変更する時のコスト削減ができる

TextureManager クラス  ITextureRegion クラス Spriteクラス

TextureManager クラス
TextureManager クラスは
TextureAtlas クラスを一括管理するクラス
TextureAtlas をインスタンス化した後
TextureManager が上に読み込むkとで描画できるようになる
ITextureRegion クラス
ITextureTegionクラスは
TextureAtlasクラスのインスタンスに
任意の画像パスを渡して読み込んだ状態のクラス
引数は
第1引数
BitmapTextureAtlas pBitmapTextureAtlas
読み込み済みの描画用範囲
第2引数
Context pContext
Context1
第3引数
String pAssetPath
画像のパス
第4引数
int pTextureX
範囲上に読み込むX座標
1つのBitmapTextureAtlas に1つの画像を読み込む場合は0を指定
第5引数
int pTextureY
範囲上に読み込むy座標
1つのBitmapTextureAtlas に1つの画像を読み込むなら0を指定する
TextureAtlas クラスのインスタンスには
複数の画像を読み込むことができるけど
管理が複雑になるし
最近では端末スペックが高いため
徹底的なメモり管理はそこまでしなくてもよくなったため
1つのTextureAtlas クラスに1つの画像としている
この状態は、パソコンのメモり管理にも似ている
次に、Spriteクラス
Spriteクラスは
ITextureRegion を元に実際に視覚化されたオブジェクト
読み込み済みの
ITextureRegionクラスのインスタンスの座標を指定し
インスタンス化する
1つのTextureAtlas クラスのい1つの画像の場合なら
0,0 でOK
Spriteクラスの引数は
第1引数
float pX
配置するX座標
第2引数
float pY
配置するY座標
第3引数
ITextureRegion pTextureRegion
読み込み済みのITextureRegion
第4引数
VertexBufferObjectManager pVertexVufferObjectManager
AndEngine では
Sprite の基準点、つまり座標の0,0
Scene の基準点、つまり 座標 0,0

左上からになる
つまり、座標 0,0 だと画面の左上になる

BitmapTexturAtlas クラス

BitmapTexturAtlas クラス
BitmpTextureAtlas クラスは
画像をオブジェクトして画面に描画する際に
いおったん格納する場所
幅、高さ共に2のべき乗でないといけない
このクラスを利用することでメモり使用量を抑えられる
引数は以下のようになる
第1引数
TextureManager
TextureManager
TextreManager(TextureManager は static)
第2引数
int pWIdth
読み込む画像の幅を上回る最小の2のべき乗の値
第3引数
int pHeight
読み込む画像の高さを上回る最小の2のべき乗の数
第4引数
TextureOptions pTextureOptions
読み込みオプション
メモりを多く消費するタイプのゲームでないなら
BIOILNEAR_PREMULTIPLYALPA
アルファ値の設定が可能
を指定する
2のべき乗とは
2を繰り返しかけた値になる
2 4 8 17 32 64 128 256 512 1024
などになる
メモりなどでよく見る数値

AndEngine途中経過を adb で表示

AndEngine途中経過を adb で表示
Activity にセットされた Sceneが
画面表示されるようになったら実行
これにはAVDを使う
でも、まだ何の要素も追加していないと画面が
真っ黒でなにもでない
しかし、実際には動いている
これを確認するには
端末を開いて
adb logcat -s AndEngine

Activity と Sceneの生成を確認できる

Camera クラスとEngineOptions クラス

AndEngineメモ
Camera クラスは
描画範囲を示すためのクラス
丁亥された座標とサイズを元にSceneが描画される
EngineOptions クラスは
BaseActivity クラス
もしくはそのサブクラスが初期化される際に
描画範囲とオプションを指定するために利用される
引数は
第1引数
boolean pFullscreen
ゲームをフルスクリーンで表示するか否か
trueならタイトルバーが非表示の状態になる
第2引数
ScreenOrientation pScreenOrientation
画面の向きを指定する
LANDSCAPE_FIXEDなら画面は横向き固定
LANDSCAPE_SENSORなら自動回転対応になる
第3引数
oResolutionPolicy pResolutionPolicy
画面の拡大、縮小のオプションになる
RatioResolutionPolicy は縦横比を指定して
可能な限り最大サイズで表示し
FixedResolutionPolicy は
値を推定して拡大、縮小しない
FillResoulutionPolicy は画面一杯に拡大する
第4引数
Camera pCamera
実際に描画するエリアを指定する
関数に関しては
AndEngineでつくるAndroid 2Dゲーム (SMART GAME DEVELOPER)
を参考にさせていただきました