UE4:Eventノードを使った簡単なBluePrintの作り方
Event Begin Play
ゲームが開始された際に発行されるイベント
Event Destroy
ActorがDestroyした時にこのEventが作動する
キャラクターが消えた時に煙のエフェクトが出るようにしてみよう
LevelBluePrintでKey【i】を押すとキャラクターがDestroyするようにします。
MycharactorのBluePrint内でイベントDestroyを設置しSpawn Emitter at Locationノードを置きます。
Spawn Emitter at Locationで煙のエフェクトを設定します。
Play
この状態でKey【i】を押すと
煙のエフェクトが発生します。
(追記:Event DestroyはEvent Endに統合されるらしいという噂を聞いたのですが本当かな?)
Event Tick:フレームごとに呼び出されるイベントノード。
Play中の経過時間の表示
LevelBluePrintで変数Floatを宣言しTimeと名付けます
EventTickの特徴であるフレームごとの出力をTimeと足し合わせ変数に代入していきます。
それを出力NodeのPrintStringノードにTimeを設定します。
Play
左端に経過時間が表示されます。
Custom Event
イベントを自作することが出来る機能を持つノード
カスタムイベントを使用して岩を回転させてみよう!
まずカスタムイベントを作成しRotationという名前にします。
そしてAdd Actor Local Rotaitonノード(ActorをYaw,Pich,Rollするときに使用するノード)につなげ横に回転出来るようにします。
EventTickを使いPlay時間をSETします。そしてブランチを使用し3秒後先ほど作ったカスタムイベントを呼び出す用にします。
Play
プレイ直後
3秒後
Event Actor Begin Overlap
アクターが他のアクターにオーバーラップした時に作動するイベント
Event Actor End Overlap
アクターが他のアクターから出た時に作動するイベント
特定の範囲に入ったらライトを付けてみよう!
まずライトを設置します
ライトをBluePrint化し、PointLightを設置します。
この時Visibleは解除しておく。(Visibleを解除することによってPlay時に光が消える)
Boxを追加して設置します。この場合BoxがOverLap判定をすることになります。
グラフに移りBoxをクリックした状態でBluePrint内を右クリックするAdd for Event Boxと表示され、そこでOnComponentBegineOverlapとOnComponentEndOverlapを設置します。
BluePrint上にPointLight1を設置し取得を選択します。そしてPointLight1から線を引っ張りToggleVisiblityノードを出しOverLapノードをつなげます。
Play
Box外にいるとき
Box内に入った時
Event Hit
アクターのコリジョンと他のアクターのコリジョンがぶつかり合った時に起こるイベント
My Comp
PrimitiveComponent - ヒットされた実行中のアクタ上のコンポーネント。
Other
Actor - コリジョンに関わるもう一方のアクタ。
Other Comp
PrimitiveComponent - ヒットされたコリジョンに関わるもう一方のアクタ上のコンポーネント。
Self Moved
Boolean -
Hit Location
Vector - 衝突する 2 つのアクタ間のコンタクト位置。
Hit Normal
Normal Impulse
Vector - アクタが衝突する力。
Hit
Struct Hit 内に収集されたすべてのデータである「HitResult」を引っ張り出し、この結果を「細分化して」個々のデータへのアクセスすることができます。
球を発射してオブジェクトとあたったら爆発のエフェクトが発生するようにしよう!
FPS用のプロジェクトを作成し、BluePrintsからMyProjectileを選択しBluePrintを編集します。
MyProjectileのBluePrintはまず球が当たった瞬間物理シュミレータが設定されているものかBrunchで判断しもしTrueな場合物理シュミレータが設定されているActorが動き、その後球が消えるといったプログラムになっています。今回はすべてのActorやオブジェクトにHitした際に爆発のエフェクトを出すようにするので、ブランチの前にノードを設置します。
ブランチの前にSpawn Emitter at Locationノードを設置します。LocationにはイベントHitのHit Locationにつなげることで爆発のエフェクトをオブジェクトにあたった部分のLocationから出すことが出来ます。
Play
Mouse Input
Event Actor Begin Cursor Over イベントアクタービギンカーソルオーバー
アクターにマウスのカーソルを当てた時にイベントが行われる
Event Actor End Cursor Over イベントアクターエンドカーソルオーバー
アクターにマウスのカーソルが外れた時にイベントが行われてる
Event Actor on Clicked イベントアクターオンクリック
アクターをクリックした際にイベントが行われる
Event Actor on Released
アクターをクリックしてリリースした際に行われる
Mouse Inputを使用してカーソルがオーバーした時にオブジェクトが上がりカーソルが外れる時に元の位置戻るオブジェクトを作ってみよう。
MouseModeの設定方法
Controller設定
コンテンツブラウザから新規→ブループリント→PlayerControllerを選択。
作成したブループリントを右クリックしエディットの設定を選択する。
そこから、[ShowMouseCurser],[Enable Click Event],[Enable Mouse Over Event]にチェックをつける。
GameModeの設定
コンテンツブラウザから新規→ブループリント→GameModeを選択。
エディットの設定からPlayer Controller Classを先ほど作ったPlayerControllerに設定する。
ワールド設定
World Settingを選択しGameModeを先ほど作ったGameModeを選択する。
これでMouseModeが完了である。
まずブループリントを作成し、エディタのグラフを開く。
イベントActor Begin Cursor OverとActor End Cursor Overのノードを設置し以下のようにノードを配置する。
まずActorの位置情報をベクトル変数に代入します。イベントが始まるとGetActorLocation(アクターの位置情報を取得するノード)から宣言したベクトル変数に代入のが一番上のノードら。
SetActorLocationはActorのLocation、つまり位置を変えるノードです。
今回はアクターをZ軸に移動したいので変数を呼び出してZ軸のみ数値を足します。SetActorLocationのLocationにつなぎます。
次にカーソルが離れた時に元の位置に戻る動作を入れるのでもう一方のSetActorLocationに変数を呼び出してつなぎます。今回はわかりやすくするためにカーソルがオーバーしたらBegin Cursor Overとカーソルが離れたらEnd Cursor Overを出力するようにします。
Play
カーソルがオーバーした時
カーソルが離れた時