妹でもわかるUnrealEngine4

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

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

反転した親子スプライトの重ねあわせ順(不完全版)

f:id:una_unagi:20150627182423g:plain

妹「こういう風にえび天を取れるようにしたんだけど、そうすると左向いてる時に、えび天が後ろ側になっちゃうんだよ」

「これはどうやって持たせてるの?」

妹「スプライトソケットというのを見つけたから、それを使って別のアクターをくっつけてみている。使い方が正しいのかはしらないけど」

「Y軸はキャタクタより手前になるようにしてるんだよね?」

妹「してる。プラス側が手前だから、1cmぶん手前になってるはず。でも反転するというか、回転させてるから、裏から見る感じになってるのかなあ……と」

「なるほど。確認のために左向きの状態で一時停止して、Y軸をマイナスにしてみる」

f:id:una_unagi:20150627182449p:plain

妹「あ、ちゃんとなってる」

「そして右を向くとまた裏側に…と。やっぱり反転した時に裏になっちゃうね。3Dで考えたらそれが普通かもしれない」

妹「3Dじゃなくて2Dで考えてくれー」

「とりあえず反転する時にY座標の値を逆にするしかないね。こんな感じでとりあえず反転出来る」

f:id:una_unagi:20150627213129p:plain

妹「あとでこれみながらやってみる」

「これには欠点があるというか、足りてない部分がある。元々左右に歩き出す時に絵の向きどうするか決めてて、そこにえび天の処理も入れたから、左向きでえび天を取ると、その後歩くまで裏側に回り込んだままになる」

妹「歩くときだけじゃなくて、えび天取った時にもY軸設定した方がいい?」

「そうなんだけど、同じようなブループリントを色んなとこに書くのはトラブルの元。後でやり方変わった時に、元のままのが残ったりする。向き設定用の関数を別に作ってそれを呼び出すのがいいと思う。使いたい場所が複数ある時は関数かマクロにしていくのが基本」

妹「ふむふむ」

「えび天を取った時のことも考えると、"どっち向きかを保存するBoolean変数"を作って、歩く時とプレイヤー登場時にそれを設定して、それを元に絵の向きだけ合わせる関数があると良いと思う」

妹「でもこれ、敵キャラとかそれぞれに関数作るの大変そうだなあ」

複数アクターが親子でつながってるような、難しそうなやつは反転させない」

妹「そ、それしかないのか」

「適当な2Dスプライトのアクターを引数にとって、絵を反転させて、子アクターがあればそれのY軸のプラスとマイナスを逆にする…という関数を作ることも出来そうな気はする」

妹「でもそれぞれスプライトの変数とか違うんだから、ブループリントに書けなくない?」

「変数をGETするというやり方じゃなく、Get Children Componentsを使えばいいと思う。配列の中身が0個なら何もしなくていいし、あればあっただけ全部やる感じで」

妹「配列……配列は、敵だ」

「えーーーー」

妹「そんなややこしい敵は作らないようにする」