PG日誌

受託系 PG が C# の事を書いています

AndEngineのCameraの指定方法

勘違いしていたのは自分だけかもしれませんが、AndEngineのEngineOptionのコンストラクタにBaseResolutionPolicyを指定する際に画面を引き延ばして指定するとタッチ座標が拡大/縮小された分の領域分、増減するのかと思っていました。。。


今まで指定していた方法はこんな感じ。
書籍の通り、RatioResolutionPolicyを指定していました。

@Override
public EngineOptions onCreateEngineOptions()
{
    // カメラサイズの設定
    Camera camera = new Camera(0, 0, 800 400);
    
    // 画面描画方法の指定
    RatioResolutionPolicy policy = 
        new new RatioResolutionPolicy(800, 400);
    
    // 横画面、800x480固定表示
    EngineOptions eo = 
        new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, policy, camera);
    
    return eo;
}

が、画面サイズが合わないとこんな感じで

f:id:Takachan:20151220190054p:plain:h300

上下に白い帯が出来てしまいます。画面サイズが合わない機種は上下/左右がおかしくなります。

が、RatioResolutionPolicyをFillResolutionPolicyへ変更し上下左右比率を無視して画面領域いっぱいに描画とすれば白い枠が消えます。(ただし引き延ばされて少し画像がぼやけますが…)

RatioResolutionPolicyとFillResolutionPolicyどちらを指定しても一番右下の座標は、x800, y400が取れます。(引き延ばされたからって右下が、x850, y432なんて事にはなりません)

なので特殊な座標計算必要ありませんでした。

こんなことにも気が付かないなんて…

なんてこった・・・