多解像度対応の際のキャラクターの位置の調整の仕方について

459 views
Skip to first unread message

kagihir...@gmail.com

unread,
Mar 16, 2017, 10:56:15 PM3/16/17
to 宴ユーザーグループ
質問の前によくある質問や、過去のQ&Aや古いQ&Aに、同様の質問がないかご確認ください。

宴のバージョン:3.0.0f3
Unityのバージョン:5.5.1f1

お世話になっております。
タイトルにある通り多解像度に対応する際にキャラクターの位置を調整する方法について質問させていただきたいです。
やりたいこととしてはどの解像度の時にも画面の下の端を基準にキャラクターの配置をしたいです。
どのような方法があるのか教えていただきたいです。
よろしくお願いいいたします。

マッドネスラボ

unread,
Mar 17, 2017, 12:44:07 AM3/17/17
to 宴ユーザーグループ
例外的な使い方になりますので、いくつか設定が必要です。


まず、宴のデフォルトでは
「最初に設定した解像度のアスペクト比のまま、中央部分を基準に余った部分はレターボックス(黒で塗りつぶす)」
という動作をします。

アスペクト比固定のまま、単純に余白部分(レターボックスの黒で塗りつぶしている部分)を下寄せにするのであれば、
LetterBoxCameraのアンカー設定を下寄せにします。





上記のように、アスペクト比を固定ではなく、

レターボックスを使わないようにするには、下記のような設定が必要になります。


例えば、横幅を可変にする場合には、

LetterBoxCameraのFlexsibleにチェックを入れて、変化する最大の幅を設定します

(縦に可変にする場合には、Nallowのほうの最大の縦幅を設定してください)



さらに、レイヤーシートでキャラクターを表示するレイヤー(キャンバス)の位置を
上記の可変解像度に合わせて、右寄せや下寄せなどにします。

例えば、キャラクターの右寄せや左寄せにする場合は、このようにします。
・Xの指定を空欄
・Widthでキャンバスの幅を設定
・左寄せする場合は、BorderLeftで画面左端からの余白を設定
 右寄せする場合は、BorderRightで画面左端からの余白を設定


X方向ではなくY方向に行う場合は
・Yの指定を空欄
・Heightでキャンバスの高さを設定
・上寄せする場合は、BorderTopで画面上端からの余白を設定
 下寄せする場合は、BorderBottomで画面左端からの余白を設定


以上のように、「座標を指定ではなく、幅とBorder(余白)の設定」を行うようにしてください。

X,Y両方の設定を使うことで、縦、横両方の可変サイズに対応することも可能です。

めったに使われない設定なので、あまり検証されていないのですが、もし不具合等あったらご連絡ください。

いまのところ把握している点としては、
「違う解像度の端末でセーブデータの互換性が取れなくなる」という点だけ注意してください。
違う解像度の端末でセーブデータを引き継いだ場合に、
キャンバスの位置を前の端末のアスペクト比を基準にした位置でロードしてしまうかと思います。
会話シーンとして使っていてセーブデータを使用していない場合(またはシステムセーブデータのみを使っているとき)は、
特に気にしなくて良いです。



kagihir...@gmail.com

unread,
Mar 17, 2017, 2:27:05 AM3/17/17
to 宴ユーザーグループ
ご返答ありがとうございます。
教えていただいた通りに設定したのですが画面の中央を基準に設定されてしまいます。
試しに2つのカメラのAnchorを違う設定にしてみましたが全て中央を基準にされていました。
もしかしたらここのアンカーのところが不具合があるのかもしれません。

マッドネスラボ

unread,
Mar 17, 2017, 2:46:21 AM3/17/17
to 宴ユーザーグループ
確認なのですが
・アスペクト比固定の設定(LetterBoxCameraのアンカー設定のみする)
・アスペクト比可変の設定(Flexible設定をして、レイヤーシートのBorder等の設定をする)
どちらを使っているでしょうか。

また、宴のデフォルト設定以外のカメラを使っているでしょうか?
独自のカメラで宴のオブジェクトを描画している場合は、アンカー設定は描画結果に影響を与えません。
(LetterBoxCameraは宴のカメラのみを操作するものですので)


他にも、画面の解像度(またはGameViewの解像度)なども確認してみてください
(ここが固定だとそもそもUnityが認識するのアスペクト比自体が固定になります)



マッドネスラボ

unread,
Mar 17, 2017, 2:49:31 AM3/17/17
to utag...@googlegroups.com
>・アスペクト比可変の設定(Flexible設定をして、レイヤーシートのBorder等の設定をする)
こちらを使っているのであれば、
キャラクター等を表示する際のレイヤーの指定に、レイヤーシートでBorder等を設定したレイヤー名が指定されているかチェックしてみてください。


kagihir...@gmail.com

unread,
Mar 17, 2017, 3:00:29 AM3/17/17
to 宴ユーザーグループ
アスペクト比可変の設定の方で設定しています。
レイヤー等の確認をしましたが問題なさそうです。
今の問題としてはアンカーが下を基準にというところができていないです。
アンカーが中心が基準になってしまっています。

マッドネスラボ

unread,
Mar 17, 2017, 3:07:42 AM3/17/17
to 宴ユーザーグループ
アスペクト比を可変にする場合は、LetteBoxCameraのアンカーはデフォルトのまま(MiddleCenter)で大丈夫です。

マッドネスラボ

unread,
Mar 17, 2017, 3:19:32 AM3/17/17
to 宴ユーザーグループ
ゲームを起動してからGameViewの解像度(サイズ)を変えた場合にはうまく動作しないと思いますので
起動前にアスペクト比を変えて試してください。

kagihir...@gmail.com

unread,
Mar 17, 2017, 3:59:55 AM3/17/17
to 宴ユーザーグループ

現状のイメージを作ったので確認していただきたいです。
このようにしたいのですができていないです。
Auto Generated Inline Image 1

マッドネスラボ

unread,
Mar 17, 2017, 4:26:42 AM3/17/17
to 宴ユーザーグループ
上記のレイヤー設定は
画面サイズに合わせて「レイヤーの位置や大きさを自動調整する」という機能です。

そうではなく、「表示する素材の大きさに合わせて、下揃えで配置したい」ということをしたいのだと思います。

であれば、レイヤーシートの「AlignをBottomCenter」としてみてください。


または、CharacterシートやTextureシートの
「PivotをBottom」にすると、各テクスチャの下が中心位置になります。
ただし、これは回転などの中心位置にもなるので、回転の中心などにしたくない場合は設定せずに、
レイヤーシートのAlignを使ってください。



kagihir...@gmail.com

unread,
Mar 17, 2017, 4:58:06 AM3/17/17
to 宴ユーザーグループ

この緑のように画面比を変えると開いてしまいます。
そのため画面の下のYポジションを0として位置の設定ができるようにしたいです。
Auto Generated Inline Image 1

マッドネスラボ

unread,
Mar 17, 2017, 6:08:18 AM3/17/17
to 宴ユーザーグループ
>X方向ではなくY方向に行う場合は
>・Yの指定を空欄
>・Heightでキャンバスの高さを設定
>・上寄せする場合は、BorderTopで画面上端からの余白を設定
> 下寄せする場合は、BorderBottomで画面左端からの余白を設定
縦方向の場合、レイヤーシートの設定をこのようにしているでしょうか。
最初の画像は横方向での設定でしたので。

もし、上記の設定をしてもうまくいかない場合は、みてみますので
お手数ですが下記のリンク先にプロジェクトを送信していただけるでしょうか


マッドネスラボ

unread,
Mar 19, 2017, 6:15:39 AM3/19/17
to 宴ユーザーグループ
こちらの件ですが、
ちょっと使いづらいため、一度ちゃんと見直してドキュメントをまとめますので、もうしばらくお待ちください。

マッドネスラボ

unread,
Mar 19, 2017, 7:41:21 PM3/19/17
to 宴ユーザーグループ
何点かプログラムを修正しました。
添付のパッケージファイルを適用してみてください。

また、ドキュメントもまとめました。ご確認ください。
Utage3.0.4b.unitypackage

マッドネスラボ

unread,
Mar 19, 2017, 8:14:13 PM3/19/17
to 宴ユーザーグループ
すみません。
先ほどのUtage3.0.4b.unitypackage を適用したのちに、さらにこちらのパッケージファイルも適用してください。


Plus_Uutage3.0.4b1.unitypackage

kagihir...@gmail.com

unread,
Mar 20, 2017, 10:51:33 PM3/20/17
to 宴ユーザーグループ
ドキュメント等ご対応いただきありがとうございます。
先ほどパッチの適用致しましたが下記のエラーが出ています。

Assets/Utage/Scripts/ADV/Graphic/AdvGraphicLayer.cs(184,38): error CS1061: Type `Utage.AdvGraphicBase' does not contain a definition for `CheckFailedCrossFade' and no extension method `CheckFailedCrossFade' of type `Utage.AdvGraphicBase' could be found. Are you missing an assembly reference?


マッドネスラボ

unread,
Mar 20, 2017, 11:01:15 PM3/20/17
to 宴ユーザーグループ
すみません。
宴を最新版(3.03)にしてから改めてパッケージを適用してください。
ただ、今はタイミング悪くアセットストアがメンテ中らしいですので、
アセットストアが復旧したら改めて最新版の宴に更新をお願いします。

kagihir...@gmail.com

unread,
Mar 20, 2017, 11:05:57 PM3/20/17
to 宴ユーザーグループ
かしこまりました。

Reply all
Reply to author
Forward
0 new messages