--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2012-11-13(Tue)

アスペクト比設定[Unity]

Androidでゲームを作ろうとしていますが、
様々な端末があり、画面解像度も様々でどのように対応すべきか決まっていませんでした。
カメラの調整やら、2D配置やらが無駄になるので、
早めにどうするか決めておく必要があると思います。自分は決めていませんでしたが。。。

調べた結果、アスペクト比を固定することにしました。
端末のアスペクト比にかかわらず、基準にするアスペクト比に固定してしまって、
残りの部分は、黒縁。
ゲームによっては、複数の解像度に対応させて、
カメラや2Dの表示位置を切り替えたりしているものもあると思います。
自分では、複数のアスペクト比で調整などできないので、アスペクト比固定です。

基準とする解像度は、720p(16:9) に しました。
なんとなく決めました、自分が確認している端末がSC-04Dなのと、
iphone5が16:9なので、なんとなくです。

コード自体は、camera.rectを設定してあげるだけです。
後は、背景用のなにもうつさないカメラを後ろに置いて、黒縁にしました。

// アスペクト比を固定
public class CameraUtility : MonoBehaviour {

#region(inspector settings)
public int fixWidth = 1280;
public int fixHeight = 720;
public bool portrait = false;
public Camera[] fixedCamera;
#endregion

public static float resolutionScale = -1.0f;

void Awake() {
int fw = portrait ? this.fixHeight : this.fixWidth;
int fh = portrait ? this.fixWidth : this.fixHeight;

// camera
if( this.fixedCamera != null ){
Rect set_rect = this.calc_aspect(fw, fh, out resolutionScale);
foreach( Camera cam in this.fixedCamera ){
cam.rect = set_rect;
}
}

// MEMO:NGUIのmanualHeight設定は不要、
// UI Root下のカメラのアスペクト比固定すればよい
// UI RootのAutomaticはOFF, Manual Heightは想定heightを設定する

// アスペクト比を設定のみなので、設定後は削除
this.Destroy(this);
}

// アスペクト比 固定するようにcameraのrect取得
Rect calc_aspect(float width, float height, out float res_scale) {
float target_aspect = width / height;
float window_aspect = (float)Screen.width / (float)Screen.height;
float scale = window_aspect / target_aspect;

Rect rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
if( 1.0f > scale ){
rect.x = 0;
rect.width = 1.0f;
rect.y = (1.0f - scale) / 2.0f;
rect.height = scale;
res_scale = (float)Screen.width / width;
} else {
scale = 1.0f / scale;
rect.x = (1.0f - scale) / 2.0f;
rect.width = scale;
rect.y = 0.0f;
rect.height = 1.0f;
res_scale = (float)Screen.height / height;
}

return rect;
}
}

これをやって良かったのは、
http://tasogare66.blog.fc2.com/blog-entry-5.html
で書いた、Unity Editor上でプレビュー確認するとき、ゲーム画面のプレビューを最大化しないとアスペクト比がずれる問題が解決され、実行すれば現状のウィンドウでアスペクト比を固定するように表示されるので、配置などの調整がやりやすくなりました。

コメントの投稿

管理者にだけ表示を許可する

コメント

コードを参照させていただきました

こちらのカメラ調整コード、いつも使わせて頂いています。
公開していただきどうもありがとうございます。

このコードを参照させていただき、GUIの位置調整用の
classを作成して、ブログに公開しました。
http://icoc-dev.hatenablog.com/entry/2013/11/19/205108

もし問題がありましたらすぐに削除します。

No title

無保証であることを理解していただければ、問題ないでーす。
blogも拝見しました。

No title

無保証ということ、了解しました。
ご了承、どうもありがとうございます。

おかげさまで、すごく重宝させて頂いてます(^^)

Advertising


カテゴリ
記事一覧
最新記事
最新コメント
最新トラックバック
月別アーカイブ
プロフィール

tasogare66

Author:tasogare66
ひっそり週末プログラム
@tasogare66

【Androidアプリ】


Wipes Arrow
(スワイプアクション)

review site
Uni本
リンク
RSSリンクの表示
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。