読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

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

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

OpenAssetOrgのアセットで2Dゲームを作る(23) スプライトの重ね合わせ順問題

f:id:una_unagi:20170130235632p:plain
f:id:una_unagi:20170130235634p:plain

「キャラクターごとにスピードを変えると、どうしても出てくるのが重なりの問題。だいたい重ね合わせの順番が変なことになる。基本的には縦方向(Z軸)に合わせてYを変化させて、下にあるやつが手前にくると2Dゲーム的に綺麗に重なって見える。横方向(X軸)も左右どっちのが手前にくるか統一してもいいけど、縦軸の方が見た目的に重要」

f:id:una_unagi:20170130235748p:plain

「ただ、ZをそのままYにつないでしまうと、ゲーム中のZの範囲というのが-160~+160だから、そんなに大きくYが動くとアクター同士のコリジョンが当たらなくなってしまう。ある程度大きくはしてあるけど。それでとりあえず-50で割ってある。こうすると160÷5は32だから、-32~+32の範囲で、これなら一応コリジョンが当たるはず。マイナスなのは、ZがプラスであるほどYはマイナスにしたかったから、プラスマイナスを逆転させるため」

妹「もっとたくさん割って、範囲を小さくした方が簡単なのでは?」

「最初は-100で割ってたんだよ、そしたら上手く重ならなかった。あんまり細かい違いだと表示順が切り替わってくれないみたいで、何度も試した結果、0.6と0.7の間ぐらいに境界線があるみたい。アクターAが0.00、アクターBが0.06だと、Aが手前に出る場合があるけど、アクターBが0.07ならBが手前だった。これがどこで決まってるかわからないから、カメラ設定とか、環境によって違うとかかもしれないんだけど」

妹「それってさ、Yが同じだった場合はどっちが上に来るの?」

「それもハッキリとはわからないけど、アクターが作られた順とかだと思う。基準は不明だけど、奥行きが(ほぼ)同じ場合にどっちが上になるかは決まってる。あとエディタ上での順番と実行時の順番も違うから、これパッケージ化したらまた変わるかも……」