僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

UE4:ターザン(ぽい)ギミックを実装する。

 

f:id:Bussan_dayo:20151016165914p:plain

 

 

 

以前作ったこれ

 

 

 

 

作り方をすっかり忘れてしまっていたのでブログにまとめます。

 

ターザン(っぽい)ギミックの実装!

使用するもの

サード・パーソンテンプレート

 

仕様

1:ケーブルの先に触るとターザンのように飛び移れる

 

記事の終わりあたりにblueprint.comで全体のBPが見れるようにしました。

あと、コードもDropboxで共有してるのでコピペで実装できます。(コンポーネント設置を忘れると出来ません)

 

 

ターザン(ぽい)ギミックのブループリント作成!

まずBPを作成します。作成時Actorを選んでください。

 

コンポーネントを設置します。以下のようにSceneを親としてCube、Cable、PhysicsContraint、Sphereを設置します。CubeとSphereのスケールを小さくしておいてください。

f:id:Bussan_dayo:20151016161402p:plain

 

Cableの詳細を開きAttachEndToのComponentPropetyにSphereを入れてください。

f:id:Bussan_dayo:20151016161612p:plain

 

次にPhysicsContraintの詳細欄を開きComponentName1にCube,2にSphereを入れてください。

f:id:Bussan_dayo:20151016161706p:plain

 

そのままですと、Cableが表示されないと思うのでグリッドスナップ値を1にしてSphereを1ずらします。そうするとCableが表示されると思います。

f:id:Bussan_dayo:20151016161833p:plain

 

f:id:Bussan_dayo:20151016161906p:plain

 

 

BluePrintを書く!

まず、イベントが始まったと同時にターザンのようなギミックが動くようにします。

 

 

 

イベントグラフを開きます。

f:id:Bussan_dayo:20151016162251p:plain

 

これでケーブルの先がSphereからPlayerに移り変わりました。

 

次にPhysicsContraintからSet Constrained Componentsノードを出します。これで物理Contraintの先がプレイヤーのカプセルコンポーネントになりました。

f:id:Bussan_dayo:20151016162323p:plain

 

しかしこのままだとPhysicsContraintが上手く動かないのでCapsule Componentの物理シミュレートをオンにします。

f:id:Bussan_dayo:20151016162558p:plain

 

これで以下のような動きになります。

 

 

 

次に離した時の処理を作ります。

CharacterのBPに移りJumpの後にBoolean型の変数を宣言し、設置します。

 今回は変数の名前をGrabにしました。

f:id:Bussan_dayo:20151016162809p:plain

 

 

 

ターザン(ぽい)ギミックのBPに戻ります。

イベントティックの前にキャストした ThirdPearsonCharacterからBoolean型のGrabを取り出しブランチします。そしてTureだった場合の処理を書きます。

 

CableからPlayerが離れcapsuleComponentの物理シミュレートもオフに、そしてPhysicsContraintもSphereにします。

f:id:Bussan_dayo:20151016163137p:plain

 

 

 

 このようにそのままのRotationで落ちてしまいます。なので、落ちる際に身体の向きを変えたいと思います。

 

身体の向きを変える!

PlayerのBPに戻ります。コンストラクションスクリプトにRotation情報を変数に保存します。

f:id:Bussan_dayo:20151016163644p:plain

(やらなくても良いのかも知れないけど一応ね・・・) 

 

 

ターザン(ぽい)ギミックのBPへ戻ります。

Boolean型の変数を宣言します。

f:id:Bussan_dayo:20151016163820p:plain

 

そしてTrue処理の後ろにセットします。Tureにするよ。

f:id:Bussan_dayo:20151016163850p:plain

 

 

シーケンスを使いTickを分岐させます。

そして先ほど宣言した変数(RotationCharacter)でブランチをします。

f:id:Bussan_dayo:20151016164011p:plain

 

そして落ちた際に多少時間をかけて回転して欲しいので先ほどCharacterBPで宣言したRotationをキャストから持ってきます。そしてキャストしたThirdPearsoncharacterからGet Actor Rotationを出しRInterpToに以下のようにつなげます。そしてそれをSetActor Rotaitonにつなげます。

f:id:Bussan_dayo:20151016164159p:plain

Get Actor Rotationと先ほど宣言したRotationが==(差1)になったらRotationCharacterがFalseになるようにします。

 

 

 

 

このように動くはず・・・

 

 BoxにPlayerが触れたら作動する

最後にCableの先に触れたらターザン(ぽい)ギミックが動くようにします。

Sphereを親にしCollisionBoxを起きます。

f:id:Bussan_dayo:20151016164354p:plain

 

Boolean型の変数を宣言します。BoxにPlayerが触れた時にTureになるようにします。

f:id:Bussan_dayo:20151016164514p:plain

 

BoxInでブランチします。

f:id:Bussan_dayo:20151016164523p:plain

 

Playerの回転処理が終わった後にBoxInがFalseになるようにします。

f:id:Bussan_dayo:20151016164604p:plain

 

 

 

 

 

全体像

 

大きく見るには 

http://blueprintue.com/blueprint/9yq7y79e/

 

Dropbox - TarzanGimicNode.txt (エディターに直接ペーストすれば同じ状態のノード構成が出てきます。)

 

 

ブログの画像が見づらかったり画像見て実装するのめんどくさい方どうぞ

以上。