UnrealEngine4でこれからも使うんじゃないかなと思ったやつ(ブループリント編)

タイトル通りです。

そもそもこのブログの目的ってやったことをまとめることなのに初めてまとめ書く

まずはブループリントで出来ること全般からです

ver : UE4.21   

目次

 

Timelineで簡単に連続した値設定

Timelineの紹介

Timelineってのはこんなノードです

ひとつずつ簡単に紹介

f:id:Sho_ganmer:20190409005024p:plain



Input

  • Play :再生開始、一度パルスを流せば更新し続ける
  • Play from Start:初めから再生
  • Stop:再生を停止
  • Reverse:現在時刻から逆再生
  • Reverse from End:最後から逆再生
  • Set New Time:次のNew Timeの時間に再生位置が飛ぶ
  • New Time:Set New Timeでジャンプする時間

Output

  • Update:更新中に流れ続ける
  • Finished:再生が終わった時に流れ続ける
  • SinCurve:timelineの中にある、実際に定義する値です(ここで自由に定義可能)

ちなみに、このタイムラインの中はこんなんになってました

(自由にプロット、定義可能)

f:id:Sho_ganmer:20190408223847p:plain

サンプル

たとえば、時間ごとに膨張、収縮するロジックはこんな感じ

f:id:Sho_ganmer:20190408224435p:plain

故障かな?と思ったら

確認してほしいこと

  • Timelineに再度入力するところを間違えてないか?
  • branchのtrueとfalseを逆にしてないか?
  • IsReverseの値を変更しているか?

 

リチャージ処理

内容

 キャラ固有のスキルを使った後、一定時間経たないと再使用できないような感じの処理です

これを応用すればマイクラのスポーンブロックみたいな挙動も作れると思う

(範囲内に入る→MOBスポーン→数秒経つMOBスポーン→数秒経つ→MOBスポーン...)

やり方

f:id:Sho_ganmer:20190408202249p:plain

特徴として、DoOnceノードを使っているところです

DoOnceノードは一度だけパルスを通し、その後はResetにパルスが流れない限り通しません

DurationTimeはfloat型の変数で、これを変えれば簡単にリチャージ時間を調整できます

 

 故障かな?と思ったら

ここを確認

  • DoOnceはあるか?
  • DoOnceに再度入力するとき、Resetに入力しているか?
  • Delayノードはあるか?

持続ダメージ(DamageOverTime,DoT)

内容

持続ダメージ、例えばとかとか。どんなゲームを作るときでも出てくると思います

こいつらに必要な情報は、何秒ごといくらダメージを与えるかです

やり方

 これを実装する方法、若干の違いがあるロジック二種類です

f:id:Sho_ganmer:20190408230317p:plain

f:id:Sho_ganmer:20190408230845p:plain

故障かな?と思ったら

確認

  • function nameをスペルミスしてないか
  • Eventにしっかり入力しているか
  • Loopingにチェックを入れているか
  • clear event時、青色のピンをちゃんとclearノードに入力しているか

二つの違い

この二つの実装、中身の挙動に違いは無いと思います

書き方の違いとして、関数名を与えるか、Eventをそのまま与えるか、です

以下は自分が思うそれぞれの長所、短所です

function name

長所

  • イベント(関数)をブループリント内のどこに定義してもちゃんと呼ばれる
  • Clearイベントもどこでも定義できる

短所

  • 関数名の指定というなんとなく気持ち悪い実装

 

event

長所

  • イベントそのまま指定というなんとなくよさげな実装
  • 直接指定するため、スペルミスや未定義にならない

短所

  • startのすぐ側にループイベントを書かないといけない
  • Clearするときもリファレンスを渡すため、これまたstartの側に書かないといけない

まぁどちらも大した差はないかなと思います。ノードを見てもどちらも綺麗だしね

もしどちらでもいい状況なら、自分ならfunction nameの方を使います。

どこでも書けるのは良いことだから

死んだらそのオブジェクトを物理エンジンで動かす(だらんってさせる)

FPSなんかでよくある、死んだときに体が柔らかくなったみたいになる、あれです

やり方

f:id:Sho_ganmer:20190409002357p:plain

故障かな?と思ったら

もし動かない時に確認してほしいこと

  • SetSumilate Physics のチェックは入ってるか?
  • SetCollision Profile Name のスペルは正しいか?
  • ターゲットにしているmeshは正しいか?

解説的な

コリジョンを変える理由は、多くの場合Characterのメッシュには物理コリジョンがありません。   なのでシミュレートしてもコリジョンがないため奈落の底に落ちてしまいます

それを防ぐためにコリジョンを変えています

※これはメッシュのCollision Enabledが「Query Only」であるためですが、これを無暗に変えるのはあまり好ましくありません(ゲーム中に余計な物理計算をさせないため)

終わりに

 いろいろ書きましたが、まだまだマテリアル、ウィジェットで忘れそうなことたくさんあるのでもうちょっとかくかも