妹でもわかるUnrealEngine4

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

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

UE4の操作方法・ノード名早見表(英語版)の紹介

「海外の掲示板で、UE4チートシートが話題になってた」

uecasts.com
エディタ操作用

uecasts.com
ブループリント用

uecasts.com
C++

「操作方法とかをコンパクトにまとめたもので、例えば妹が先日探していた、アクターを地面にぴったりくっつけるやつも載ってる」

妹「どこに?」

「エディタのやつの、Snap to floorってところに」

妹「うーん、たしかにEndキーと書いてあるから、それなんだろうけど」

「掲示板では他にも載せた方が良い操作とかも挙がってたから、もっとアップデートしていくとは思うけど、英語はどうしようもないね。妹でもわかるやつを作らないと」

妹「LMBってなんだろ?」

「Left Mouse Button、つまりマウスの左クリックのこと。RMBだと右クリック、MMBだとホイールクリックになる。説明がわからないやつに関しては、実際にその操作をやってみればわかりそう。ブランチノードを一発で出す操作とかは知らなかったけど、覚えておけば便利そう」

アクターをサブレベルにスポーンさせる方法

f:id:una_unagi:20171005215213p:plain

「エディタで配置したアクターに関しては、昨日の方法で好きなサブレベルに移動させることが出来るんだけど、スポーンしたやつは全部パーシスタントレベル……つまり大本のレベルに所属してしまうという問題がある」

妹「それだとサブレベルを読み直した時に弾が残っちゃうってことかな」

「残る。弾のアクターとかはだいたい決まってるから、GetAllActorsOfClassとかで全部Destroyしてもいいんだけど、一応サブレベルにスポーンさせる方法も見つかった」

f:id:una_unagi:20171005220422p:plain

スポーンさせる時に、Ownerピンに、所属させたいレベルにあるアクターを指定する。今回はサブレベルにあるアクターのselfを接続してる。こうするとOwnerがいるレベルにスポーンされてくる」

f:id:una_unagi:20171005220428p:plain

「レベルごとに色分け表示すると、キューブと同じサブレベル(紫色)に所属してることがわかる」

妹「オーナー……って何に使うやつだっけ?」

「今のところ何にも使ってない。オンライン対戦とかだと何らかの何かがあるらしいんだけど、普通に1人用ゲーム作る場合は特に意味はなさそう。親子関係でもないから、Ownerを移動したりしてもスポーンしたやつに影響はなかったはず。といっても無関係のアクターをOwnerにするのは気持ち悪いから、スポーン用に非表示のアクターがあるとよさそう」

f:id:una_unagi:20171005225702p:plain

「こういう風に、あとからOwnerを設定しても所属するサブレベルが変わらない。あくまでスポーン時に設定したOwnerが基準」

妹「こないだの拡大のやつと一緒かな。スポーンした時に拡大するのと、あとでConstructでやるのは違うみたいな」

サブレベルの作成と部分的なリセット

f:id:una_unagi:20171004230023g:plain

「サブレベルもちょっと使ってみた方がいいかなと思ったので、FPSテンプレートをベースにして、簡単な実験をやってみた。弾にあたって動くキューブだけサブレベルにうつして、任意のタイミングでサブレベルだけリセットする」

妹「簡単そう?」

「原理がわかれば、作業自体はむずかしくない」

historia.co.jp

「だいたいこの記事の内容にそって、FPSテンプレートの中にある、」

f:id:una_unagi:20171004225048p:plain
f:id:una_unagi:20171004225121p:plain

「まず、新しいレベルを作る。そうするとアセットをどこに保存するか聞かれるので、適当な名前で保存する。サブレベルというか、要するに2つ以上のレベルを1度に表示するという仕組みだから、レベルが複数必要になる」

f:id:una_unagi:20171004225431p:plain
f:id:una_unagi:20171004225436p:plain

「サブレベルを現行レベルというのに設定しておいてから、アクターをその現行レベルの方に移動させる。この時点でエディタ上の全く見た目は変わらない。さっきの記事にあるように、レベルごとに色分けする設定で表示すれば色が違うって確認できるけど、それ以外では全くわからない」

妹「いまいちサブレベルがどういうものかわからない」

ウィジェットを作る時に、別の自作ウィジェットを中に組み込むような感じの」

妹「それはやったことあるけど、その場合って中身の調整する時には、中身だけで編集しないと駄目だったような」

「サブレベルの中身も直接編集できるけど、個別に編集も出来る」

f:id:una_unagi:20171004225823p:plain

「コンテンツブラウザでサブレベルの方をダブルクリックして編集するとこうなる。闇の空間にキューブだけある状態。カメラもライトもないから、光源無視で表示してるけど」

妹「これを重ねて表示する感じなのかなあ」

f:id:una_unagi:20171004230730p:plain

「リセットはこういうノードを組んでる。まずUnloadStreamLevelでサブレベルを消してから、LoadStreamLevelで読み込む。読み込むのだけやると、もう読み込んであるからって無視された」

f:id:una_unagi:20171004230943p:plain

「初期設定で、ブループリントで読み込むようになってるから、そこは変えない。変えると再読み込みが上手く機能しない。サブレベルをリセットする気がないんだったら、常にロード済みでもいいんだけど。手動だからBeginPlayとかでLoadSteamLevelを使わないと、最初はキューブが表示されない状態になる」

妹「やっぱり何かむずかしい気が。例えばOpenLevelでサブレベルを読み込むと?」

「そしたら闇の空間+初期位置に置かれたキューブのマップに移動する。開いた瞬間に空中落下する」

妹「サブレベルにレベルブループリントがあったら?」

f:id:una_unagi:20171004231446p:plain

「それも普通に動く。サブレベルがある時とは、レベルブループリントのメニューのところにサブレベル用のもでてくる。別のサブレベルとかに置いてあるアクターを、ドラッグしても水色ノードが作れなかった。それやると、レベル単体で開いた時にどこのアクターかわからないからだろうけど」

妹「じゃあ、リセットしてキューブが出て来るところに別の物が置いてあったら?」

「それはどうなるんだろう? FPSテンプレートの場合は、自分がその場所にたってたら、キューブがはじかれてコロコロしていった。多分キューブをその場にスポーンさせた場合と同じような処理だと思う」