妹でもわかるUnrealEngine4

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

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

オブジェクトチャンネルについて

妹「動的とか静的とかいうのは、UE4の言葉なの? それとも一般的な言葉?」

「どちらかというと一般的かな。コンピューター関連でよく出てくる言葉なんだけど、どういう意図で使われるかによって意味が違ってきて、UE4に限っても何種類かある。昨日の場合でいうと静的な(動的な)アクター、もしくは物体といった意味合いになる」

妹「背景が静的で、敵とかは動的?」

「標準で用意されてるオブジェクトチャンネルでアクションゲームのアクタを分類するとだいたいこんな感じになる」

WorldStatic 動かない背景や足場
WorldDynamic 動く足場、敵キャラ、弾
Pawn キャラクター
PhisicsBody 物理をONにしてある物体
Vehicle 乗り物・車など
Destructible 壊せるブロック
NoCollision 遠景などの、ゲーム中に当たり判定が一切存在しないもの

「結局のところゲーム内でコリジョンをどういう判定にするかということだから、細かいところはゲームごとに違うんだけど。敵をPawnに設定するケースもあるだろうし。足りなければ自分で作っちゃってもいい。スワッグニンジャことSwingNinjaでは、オブジェクトチャンネルを4つ足して使ってる」

妹「それの名前まだ直ってなかったんだ……」

f:id:una_unagi:20160109214425p:plain

「弾の分類が必要なら、ここに"弾"を足しちゃってもいい」

妹「主人公用のオブジェクトチャンネルは追加してみたんだけど、これはそもそもどういうタイミングで作るものなんだろうかと」

「それはなんとも難しい問題。基本的には元々ある項目で足りるならそれで済ませて、上手く区別出来ない場合はPresetを増やして、それでも正しく判定出来ない時にはオブジェクトチャンネルを追加のがいいと思う」

妹「オブジェクトチャンネルは足さない方がいいの?」

「駄目ってことではないんだけど、オブジェクトチャンネルを追加すると、全部のPresetに影響するんだよ。だからあんまり増やさない方が安全なんじゃないかと」

f:id:una_unagi:20160109220743p:plain

「これがSwingNinjaのBlockAllだけど、新しく追加した4つに関しては無視になってる。オブジェクトチャンネルのデフォルト値が無視だから、何もしないと無視になる。その結果BlockAllがBlockしてないコリジョンが出来てる」

妹「でもサンプルがこうなってるってことは、このまま動いてるの?」

「もともとBlockAllを使ってないか、影響が出ないところでしか使ってないんだと思う」

妹「でもダイナミックとかよくわからないから、"弾"とか"敵"とかで作って分けちゃった方が早そうな気がする」

「そこらへんは好みの問題というか、どれに分類するかで悩むぐらいなら作っちゃった方が早いよ。マリオ風味で作ろうとすれば最終的には色々追加しないと足りないだろうって気もする」