妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

OpenAssetOrgのアセットで2Dゲームを作る② 2D向きのカメラ設定

「UE4で2Dゲームを作ろうとする時に、ちょっとめんどくさいのがカメラの設定。標準の2Dテンプレートだとキャラクタにカメラがくっついてるけど、今回は1画面で完結するようにゲームを作りたい。そうすると独立したカメラの方が便利」

f:id:una_unagi:20161228235616p:plain

「3Dの場合はZ軸は重力に関わるから変えないとしても、XとYはわりとどうとでもなるというか、キャラが回転するならどこ向いてても同じだから、好みで決めても良かった。でも2Dの場合ある程度正解の設定というのがあると思ってて、それが上の図」

妹「設定はそれでいいけど、他のはなんで不正解なの?」

「まずZ軸については、重力設定を使う可能性があるからこのままがいいだろうと思う。で、Y軸は前後どっちでもいいけど、逆から見るとキャラクタが反転するからプラスが手前の方がいい。一番問題なのは原点。これは普通の2D用ツールとかだと、左上に持ってくることが多い」

f:id:una_unagi:20161229000033p:plain

「こんな感じ。歴史的経緯があって、数学のグラフとも違う。ただ左上を合わせようと思うと、カメラのOrthoWidthを変更するとカメラの位置をずらさなきゃいけなくなった。UE4のカメラの画面の中心を設定する仕組みだから、左上がどこかっていうのを考慮してない。中心は0って決めてしまった方がやりやすそうだった」

f:id:una_unagi:20161229000332p:plain

「次に、そのカメラ設定を毎回やるのがめんどくさいなったので、自分用2Dカメラの設定をブループリントクラスとして作っておくことにした。CameraActorを継承してる。パースは無視してOrthoGraphics。幅とかはお好みでいいんだけどドット絵アセット使うなら320か640が一般的」

妹「あれ? でも一般的でない512になってるけど?」

「ここは見た目の印象で決めていいんだけど、キャラクターが画面にどれぐらい入るかという問題で、今回は32pixelのキャラだから、320だと10キャラ分、640だと20キャラ分入る。兄の好みとしてはその中間ぐらいだからそうなった」

妹「画面にキャラがいっぱい入るっていうのは、小さく見えるってことかな」

「そうそう、そういうこと。広すぎると画面がスカスカになるけど見通しは良くなる。狭すぎるとドットの粗さが目立ったり、先が見えなくて無駄に難易度上がる場合がある。ジャンルによってもいい感じの数字は違う。縦方向はAspectRatioで横の解像度との比率を設定することで決まる。リストにあるやつから選べばだいたい常識的な数字になる」

f:id:una_unagi:20161229001538p:plain

「で、ブループリントで、起動時にこのカメラが使われるように設定しておく。これでレベルブループリントとかに毎回書かなくていい。位置はブループリントに保存できないから、Blutilityで位置合わせを出来るようにした。XとZは0、Yプラス方向に動かして、回転のZを-90。これで画面中央を原点にする想定ポジションに設定できる。Blutilityについては前に書いた記事を参考に」

imoue.hatenablog.com

f:id:una_unagi:20161229002058p:plain

妹「これってカメラ位置もBeginPlayでやったらいけないの?」

「いけなくはない。自動化という点ではその方が楽だし。ただエディタ上でカメラを選択すると、カメラから見える映像がミニウィンドウで出たりするんで、開発中の段階で適切なポリジョンに動かす方法が欲しかった。その上で位置調整したいケースもあるかもしれない」