妹でもわかるUnrealEngine4

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

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

茂みに隠れるやつ

f:id:una_unagi:20151212231845g:plain

妹「まだ調整中だけど、こういうものができた。そのへんに茂みの中に隠れられるようになっている」

「これはどういう時に使うの?」

妹「敵が通る時とかによけられる。あと弾みたいなのも。この状態だと動けないけど無敵」

f:id:una_unagi:20151213001918p:plain

f:id:una_unagi:20151213001925p:plain

妹「茂みのコリジョンと重なってる時に操作ボタンを押すと、動けないようにムーブメントを無効化して、敵が通り抜けるようにコリジョンをOverlapにしてある。茂みから出る時は逆向きに」

「なるほど。フィールドのへこんでるところとか、壁を盾にしてる時と同じで安全地帯になってるのか。それで調整中というのは?」

妹「まず隠れる操作の取り扱いというか、今はなにかに書いてあった、インターフェースを使って操作できるようにしてあるんだけど……」

f:id:una_unagi:20151213002419p:plain

f:id:una_unagi:20151213002428p:plain

妹「主人公アクターとしては、ボタンを押した時に、アクションインターフェースを持ってるやつがオーバーラップしてたら、そこに紐づいたイベントを実行するという仕組みになっている。でもこういうケースでこのやり方で正しいのかがちょっとわからない。今のところは問題なく動いてるけど、あとあとになって大問題が発覚するパターンかもと」

「これでいいと思うけどなあ。こうやるか、もしくは主人公アクターに書くか、どっちにするかという問題だから。主人公アクターはどうしてもブループリントの分量が多くなるわけで、ステージによって使ったり使わなかったりするギミックの分まで入れるのはいまいち」

妹「でも例えば茂みだけじゃなくて、岩の裏側に隠れるとかも作ったとするじゃん? そしたら隠れる処理で同じのを別のアクターに書くことにならない?」

「その場合は隠れる系物体の基底クラスを1つ作って、それを継承して各アクターを作ればいい。継承元で隠れるのに必要なイベントとか関数とか作っておく。必要なコンポーネントも設定しておいて、継承先で絵やサイズを変えればいい。それぞれがアクターとしてかけ離れてる場合は、必要な処理だけ関数に分けてもいい。結局その関数を主人公アクターの中に書くことにはなるだろうけど」

妹「結局主人公のとこに書いちゃったら意味ないのでは……。むしろブループリントのグラフをいったりきたりするぶん処理がわかりづらくなりそう」

「そのへんは好みもあるからね。例えばタッピーチキンとかは1つのグラフに全部まとめて書いちゃってるし。いろんなやり方と、そうするとどういう感じのブループリントになるかがわかってれば、適当に良い感じの方法が選べるようになると思う。複数人でやるプロジェクトだと、クラスとかも話し合ってからしか作れなかったりとかもするけど、1人で作る時は自分のモチベーション重視で」