2D的に影のできる場所をどうやって探すか
妹「ジャンプしてる時とかに、影をどうやって出せばいいかという問題があるんだけど」
「どうやってというと」
妹「空中にいるわけだから、足元じゃ駄目で、その下にある地面がどこか調べないといけない。LineTraceかなと思うんだけど、なんか大げさな気もする」
「なるほど。2Dだからライトも使わないのか。それだったらLineTrace案でいいのでは」
妹「でももっと簡単な方法あったりしない? 例えばファミコンのアクションゲームとかでLineTraceなんか使ってなかったんじゃないかなあと」
「それは使ってないと思うけど、仕組み自体がだいぶ違うからね」
「昔の2Dゲームは地形をブロック単位のデータで持ってて、一番シンプルなのだと床があるかないかだけで区別できる。この場合の影は縦方向の位置は一定だから、横の位置だけ自分に合わせて、あとは下に床がない時に非表示にすればいい」
妹「でこぼこしてる時は?」
「その場合は床の高さを調べるんだけど、キャラの横座標から、対応する配列の数字を調べて、その高さに合わせるとか。斜め見下ろし型みたいになってると、さらに配列を二次元に増やさないと駄目だけど、そもそもファミコンだとそこまで複雑な仕様にはしないかも」
妹「そういうやり方では作ってないね」
「UE4のコリジョンシステムは、昔の配列で管理する考え方より柔軟になってるから、ソレ用にLineTraceというのも必要になってくる。今回のケースで調べるのは真下だけだから、LineTraceよりは単純なしくみでいいんだろうけど」
妹「じゃあLineTraceでいいのか。なんかもったいない気もするけど」
「先に配列を作って、そこからブロックをスポーンさせるという作り方はUE4でも出来るし、その場合は昔ながらの方法で当たり判定とってもいいと思うけど。まあでもLineTraceはよく使う物だから、十分高速化されてると思うよ。たぶん」