UE4:ターザン(ぽい)ギミックを実装する。
以前作ったこれ
作り方をすっかり忘れてしまっていたのでブログにまとめます。
ターザン(っぽい)ギミックの実装!
使用するもの
サード・パーソンテンプレート
仕様
1:ケーブルの先に触るとターザンのように飛び移れる
記事の終わりあたりにblueprint.comで全体のBPが見れるようにしました。
あと、コードもDropboxで共有してるのでコピペで実装できます。(コンポーネント設置を忘れると出来ません)
ターザン(ぽい)ギミックのブループリント作成!
まずBPを作成します。作成時Actorを選んでください。
コンポーネントを設置します。以下のようにSceneを親としてCube、Cable、PhysicsContraint、Sphereを設置します。CubeとSphereのスケールを小さくしておいてください。
Cableの詳細を開きAttachEndToのComponentPropetyにSphereを入れてください。
次にPhysicsContraintの詳細欄を開きComponentName1にCube,2にSphereを入れてください。
そのままですと、Cableが表示されないと思うのでグリッドスナップ値を1にしてSphereを1ずらします。そうするとCableが表示されると思います。
BluePrintを書く!
まず、イベントが始まったと同時にターザンのようなギミックが動くようにします。
イベントグラフを開きます。
これでケーブルの先がSphereからPlayerに移り変わりました。
次にPhysicsContraintからSet Constrained Componentsノードを出します。これで物理Contraintの先がプレイヤーのカプセルコンポーネントになりました。
しかしこのままだとPhysicsContraintが上手く動かないのでCapsule Componentの物理シミュレートをオンにします。
これで以下のような動きになります。
次に離した時の処理を作ります。
CharacterのBPに移りJumpの後にBoolean型の変数を宣言し、設置します。
今回は変数の名前をGrabにしました。
ターザン(ぽい)ギミックのBPに戻ります。
イベントティックの前にキャストした ThirdPearsonCharacterからBoolean型のGrabを取り出しブランチします。そしてTureだった場合の処理を書きます。
CableからPlayerが離れcapsuleComponentの物理シミュレートもオフに、そしてPhysicsContraintもSphereにします。
このようにそのままのRotationで落ちてしまいます。なので、落ちる際に身体の向きを変えたいと思います。
身体の向きを変える!
PlayerのBPに戻ります。コンストラクションスクリプトにRotation情報を変数に保存します。
(やらなくても良いのかも知れないけど一応ね・・・)
ターザン(ぽい)ギミックのBPへ戻ります。
Boolean型の変数を宣言します。
そしてTrue処理の後ろにセットします。Tureにするよ。
シーケンスを使いTickを分岐させます。
そして先ほど宣言した変数(RotationCharacter)でブランチをします。
そして落ちた際に多少時間をかけて回転して欲しいので先ほどCharacterBPで宣言したRotationをキャストから持ってきます。そしてキャストしたThirdPearsoncharacterからGet Actor Rotationを出しRInterpToに以下のようにつなげます。そしてそれをSetActor Rotaitonにつなげます。
Get Actor Rotationと先ほど宣言したRotationが==(差1)になったらRotationCharacterがFalseになるようにします。
このように動くはず・・・
BoxにPlayerが触れたら作動する
最後にCableの先に触れたらターザン(ぽい)ギミックが動くようにします。
Sphereを親にしCollisionBoxを起きます。
Boolean型の変数を宣言します。BoxにPlayerが触れた時にTureになるようにします。
BoxInでブランチします。
Playerの回転処理が終わった後にBoxInがFalseになるようにします。
全体像
大きく見るには
http://blueprintue.com/blueprint/9yq7y79e/
Dropbox - TarzanGimicNode.txt (エディターに直接ペーストすれば同じ状態のノード構成が出てきます。)
ブログの画像が見づらかったり画像見て実装するのめんどくさい方どうぞ
以上。