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

妹でもわかるUnrealEngine4

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

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

ナビメッシュ調査

ビヘイビアツリー

妹「やっぱりナビメッシュはよくわからない。説明に書いてある通りに作れば動くんだけど、自分でちょっと違うことをやるとなぜか失敗しちゃう」

「心配の原因はわからないけど、ナビメッシュの性質については少し調べてみた。まずこれってZ方向にしか効かないみたい。NavmeshBoundsVolumeを傾けても、横向きの壁とこにおいても、塗られるのは上向きの面だけ」

f:id:una_unagi:20150816221425p:plain

妹「2段重ねになってるフロアにも反応するのか。っていうか緑になってる範囲が妙に広い気がする。くっついてないとこまで緑になってる」

「直接接触したとこが範囲になるんじゃなくて、接触したアクターの上側の面に、NavmeshBoundsVolumeを真上から見た形のナビゲーションメッシュが出来る感じ。傾けたりせずにまっすぐな状態で使えば見た目で接触してる部分と同じになる」

妹「なんで斜めにしたの?」

「上以外の面にナビメッシュを作りたかったから」

妹「それはだって重力があるから駄目なんじゃないの? 歩いておっかけるみたいな使い方するみたいだし、そうなると歩けるのは上向きのとこだし」

「だから重力の方向を変えようと思ったんだけど、なんか変えられないみたいなんだよね。Gravity Directionとかで調べると、やりたい人は多いけどやる方法がない。UE4の大本の部分でそう決まっちゃってる」

妹「別にいいのでは?」

「もし重力の方向が変えられるんだったらね、例えば浮いてる敵キャラクタはY軸に重力をかけて、浮いてるように見えるけど実は透明な壁に足をついて歩いてる……ような状態にすることが出来る。そしてその透明な壁にナビメッシュをつける。そしたら2Dの横スクロールゲームでもナビメッシュを使うことが出来る」

妹「おお、いいアイデアじゃないか。さっそく重力の方向を変えてみよう」

「いや、だから出来なかったんですよ」

妹「だめじゃん……」

「もう1つの案としてカメラを回転させるというのがある」

f:id:una_unagi:20150816222940p:plain

「こうすると見た目横向きの壁にでもナビメッシュをつけることは出来るし、壁を透明にして、絵の向きを調整すれば浮いてるように見せることは出来そう。全キャラが同じでよければこの方法は使えそう。ただ歩いてる敵と浮いてる敵でわけたいとかの場合には使えない」

妹「でも普通に重力方向変えたい時ってあると思うんだけど、出来なかったら困るんじゃないの?」

「今回はナビメッシュのことがあるからべつだけど、ブループリントのTickで特定方向に加速させる方法は使えるよ。デフォルトの重力はオフにするか0にすればいい」

妹「結局ナビメッシュは地面にしか使えない感じなのか」

「いまのところそうだと思う。使える場面がかなり限定されてる」