僕の私のUnrealな日々

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

UE4:走ってくるキャラクターに物理シュミレーションを使い転ばせる方法

 


UE4:ゴブリンと遊ぶ - YouTube

 

 

 走ってくるキャラクターに物理シュミレートをかけてコケさせよう

f:id:Bussan_dayo:20150310195126p:plain

 

 

仕様:

走ってくるゴブリンに球をぶつけると、コケる。

コケたあと3秒後消える。

 

 

使用したもの

FirstPersonのテンプレート

Mixamoのゴブリン (無料アセット)

 

 

 

Gを押すとゴブリンがフニャってなるようにする

まずゴブリンを召喚します。

f:id:Bussan_dayo:20150310191512p:plain

 

ゴブリンのブループリントのグラフを開きます。

 

カスタムイベントを作成します。名前を[Simulate]にします。

以下のMeshとCapsuleComponentをグラフに持ってきます。

f:id:Bussan_dayo:20150310191739p:plain

 

Meshを[Set Simulate Physics]、Capsule Componentを[Set Collision Enabled]に繋げます。

 

f:id:Bussan_dayo:20150310192045p:plain

[Set Simulate Physics]はターゲットに物理シュミレートを実装します。

[Set Collision Enabled]はターゲットのコリジョン(当たり判定)をNew Typeで選択したタイプをセットします。今回はNo Collisionになっているので当たり判定を無効化したということです。

 

そしてゴブリンを選択した状態でレベルブループリントを開き、ゴブリンのリファレンスを追加し、[G]を押すと先ほど作ったカスタムイベントにつながるようにします。

 

f:id:Bussan_dayo:20150310192428p:plain

 

これでGを押すとフニャってなるBluePrintの完成です。

 

しかし物理シュミレーションは動かずコリジョンだけが消えています。

f:id:Bussan_dayo:20150310192525p:plain

ゴブリンの中を覗いてる様子

 

 

物理シュミレーションが動いていないので稼働させます。

 

ゴブリンスケルトンメッシュが入ったフォルダを開きます。

f:id:Bussan_dayo:20150310192730p:plain

 

Mixamo_Goblin(スケルトンメッシュ)を右クリックし、作成から物理アセットをクリックします。

 

すると物理アセットが現れます。

f:id:Bussan_dayo:20150310192906p:plain

 

これで、フニャってなるかというと、

 

 下に落ちてしまいます。

 

これはMeshのコリジョンを変えてあげる必要があります。

ゴブリンのブループリントのビューポートからMeshを選択し、CollisionをBlockAllにします。

f:id:Bussan_dayo:20150310193035p:plain

 

すると、

 

フニャってなります。

 

 

球が当たるとフニャってなるようにする

まずゴブリンが自分のところに走ってくるブループリントを作成します。

ゴブリンのブループリントのエディタを開き、以下のように設置します。

f:id:Bussan_dayo:20150310194433p:plain

そして、Nav Mesh Bounds Volumeを設置すればおkです。

 

次にイベントHitノードを使用します。

球のみが反応するようにするため、Otherから球のBluePrint(FirstPersonProjectile)にキャストします。

次にカスタムイベント[Simulate]を削除し繋げます。

f:id:Bussan_dayo:20150310194646p:plain

 

そして、倒れた3秒後に消えるようにするため、DelayとDestroyActorノードを後ろに設置します。DelayはDuration×秒間遅らせることができるノードです。Destroy Actorとはレベル上からActorを消し去るノードです。

 

f:id:Bussan_dayo:20150310194915p:plain

 レベルブループリントに設置したノードを消せば

 

これで完成です。

 

 

 

 

以上。