OpenAssetOrgのアセットで2Dゲームを作る② 2D向きのカメラ設定
「UE4で2Dゲームを作ろうとする時に、ちょっとめんどくさいのがカメラの設定。標準の2Dテンプレートだとキャラクタにカメラがくっついてるけど、今回は1画面で完結するようにゲームを作りたい。そうすると独立したカメラの方が便利」
「3Dの場合はZ軸は重力に関わるから変えないとしても、XとYはわりとどうとでもなるというか、キャラが回転するならどこ向いてても同じだから、好みで決めても良かった。でも2Dの場合ある程度正解の設定というのがあると思ってて、それが上の図」
妹「設定はそれでいいけど、他のはなんで不正解なの?」
「まずZ軸については、重力設定を使う可能性があるからこのままがいいだろうと思う。で、Y軸は前後どっちでもいいけど、逆から見るとキャラクタが反転するからプラスが手前の方がいい。一番問題なのは原点。これは普通の2D用ツールとかだと、左上に持ってくることが多い」
「こんな感じ。歴史的経緯があって、数学のグラフとも違う。ただ左上を合わせようと思うと、カメラのOrthoWidthを変更するとカメラの位置をずらさなきゃいけなくなった。UE4のカメラの画面の中心を設定する仕組みだから、左上がどこかっていうのを考慮してない。中心は0って決めてしまった方がやりやすそうだった」
「次に、そのカメラ設定を毎回やるのがめんどくさいなったので、自分用2Dカメラの設定をブループリントクラスとして作っておくことにした。CameraActorを継承してる。パースは無視してOrthoGraphics。幅とかはお好みでいいんだけどドット絵アセット使うなら320か640が一般的」
妹「あれ? でも一般的でない512になってるけど?」
「ここは見た目の印象で決めていいんだけど、キャラクターが画面にどれぐらい入るかという問題で、今回は32pixelのキャラだから、320だと10キャラ分、640だと20キャラ分入る。兄の好みとしてはその中間ぐらいだからそうなった」
妹「画面にキャラがいっぱい入るっていうのは、小さく見えるってことかな」
「そうそう、そういうこと。広すぎると画面がスカスカになるけど見通しは良くなる。狭すぎるとドットの粗さが目立ったり、先が見えなくて無駄に難易度上がる場合がある。ジャンルによってもいい感じの数字は違う。縦方向はAspectRatioで横の解像度との比率を設定することで決まる。リストにあるやつから選べばだいたい常識的な数字になる」
「で、ブループリントで、起動時にこのカメラが使われるように設定しておく。これでレベルブループリントとかに毎回書かなくていい。位置はブループリントに保存できないから、Blutilityで位置合わせを出来るようにした。XとZは0、Yプラス方向に動かして、回転のZを-90。これで画面中央を原点にする想定ポジションに設定できる。Blutilityについては前に書いた記事を参考に」
妹「これってカメラ位置もBeginPlayでやったらいけないの?」
「いけなくはない。自動化という点ではその方が楽だし。ただエディタ上でカメラを選択すると、カメラから見える映像がミニウィンドウで出たりするんで、開発中の段階で適切なポリジョンに動かす方法が欲しかった。その上で位置調整したいケースもあるかもしれない」