cocos2dxで画面比率の違うデバイスでも帯を出さないようにするには

cocos2dxはマルチプラットフォームなのでAndroid版も簡単に作成できて便利ですが、
Androidは画面比率がばらばらなので、
ゲームアプリの場合、ゲーム内の画面の比率を変えずに表示しようとした場合、
ResolutionPolicyでまず考えるのは比率をそのままに画面内に収まるように表示できる
SHOW_ALL
になるのですが、これだと上下か左右に黒い帯が表示されてしまいます。
SHOW_ALLの時に背景画像でも表示できれば良いのですが、良い方法を見つけられませんでした。

比率は変えたくないし、黒い帯は表示したくない。
そこで以下の方法で出来ないか考えました。
・比率はそのまま
・各画面で縦か横にスクロール。スクロールしない画面は背景画像か何かを表示。

今現在使われているデバイスの画面の縦横比率は以下のようになっており、

画面方向を縦とした場合、
各画面で横幅をiPadの横幅を最低幅とすればいけるのではないかと思います。
スクロールしない場合はAndroidでもっとも細長い画面の最小幅の中にボタンなどをすべて表示し、
その画面の最背景に背景画像を表示すれば
SHOW_ALLでは出来なかった背景画像表示も可能になります。

また、解像度で分岐すると複雑になるので、画面の高さを1136で統一するため、

[code]
~AppDelegate.cpp~
glview->setDesignResolutionSize(640, 1136, ResolutionPolicy::FIXED_HEIGHT);
director->setContentScaleFactor(1136 / Director::getInstance()->getWinSize().height);
[/code]

といった感じで高さを基準にスケールを決め、
あとは各画面で横にスクロールする場合にはiPadの横幅である852以上のレイヤーを作り、
左右にスクロール機能をつける。
スクロールさせないのであればiPadで問題なく表示できるよう横幅は852で画面を作り、
ボタンや表示はAndroidでもっとも細長い比率である縦横2:1の横幅、568に収まるように配置をする。
縦横2:1で画面デザインをするのは窮屈にも思えるので
デザインをうまく考える必要はありますね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です