妹でもわかるUnrealEngine4

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

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

アタッチしたコンポーネントを常に手前に表示する

そのままにしていると反対向いた時にアイテムが裏側にいってしまう問題
f:id:una_unagi:20160304214843p:plain

「昨日のSetAbsoluteOrderがどういう原理で動いてるのか調べたんだけどね、Location用のフラグとかRotation用のフラグとかは分かれてるんだけど、軸ごとには分けられる仕組みにはなってなかった」

妹「やっぱり駄目なのか。そんな気はしてたんだけど」

「ということで、解決方法としては考えられるのは、いま妹がやってるような、ブループリントで常に座標を補正するという方法」

f:id:una_unagi:20160304214721p:plain

「ここに6って書いちゃうと後で調整する時やりにくいから、エディタから変更出来る変数にするか、元のY軸をABSノード経由で渡すようにした方がスマートだと思うけど」

妹「それやってもノード数が減るわけじゃないし、わたしが求めてるスマートさとは違うのだ」

「そうなんだ……あともう1個方法があって、SpriteStudioのパーツとして作って、必要に応じてテクスチャを差し替える方法。前にパーツを透明化させる実験でやったやつだけど」

妹「SpriteStudioのパーツだったら反転しても裏側にいかないの?」

「いかない。見た目が左右反転するように作ってあるから。そうしないと、手足とかも裏側にいっちゃうでしょ」

妹「アイテムをパーツとして作るとすると、どういう風に作ったらいいのか」

「例えばキャラクターと別に、1枚まるまるアイテムの絵だけ書いたテクスチャを作って、それを持たせる。他のアイテムも同じ大きさの絵にして、実行中に差し替える。何も持ってない時は透明のテクスチャに差し替える。そうすると全部SsPlayer上で完結するから、重ね合わせの問題は解決する」

妹「それだと大きさの調整がやり直しだし、めんどうな割にあんまり効果がないような」

「今回の場合はキャラクターの上に表示するだけだからね。でも例えば右手より上だけど左手よりは下みたいな、微妙な位置に表示する場合はこの方法が必要になる。アイテムを持つ場合だと、にぎった指の方を上にするとか」

妹「そのへんは肉球にくっついてるので問題ない」

「今のところできそうな方法としてはそんな感じ。パーツの差し替えというか、ゲーム進行に合わせて差し替えるというのは色々大変みたい」