15
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Unity] 爆風でRagdollを吹き飛ばす

Last updated at Posted at 2015-07-27

今作っているゲームでRagdollを爆風で吹き飛ばす演出があるのでそのモックを作ったときのメモ。

爆風サンプル

上記サンプルはGithubに上げてあります。

爆風の計算を行う

Unityにはデフォルトで、爆発による力をRigidbodyに適用するメソッド(AddExplosionForce)が準備されています。

AddExplosionForceの定義

定義は以下のようになっています。

public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, float upwardsModifier = 0.0F, ForceMode mode = ForceMode.Force);

爆発の威力、爆発点、爆発半径を与えると爆発の状態をエミュレートしてRigidbodyに力を与えてくれます。
例えば散らばったCubeそれぞれに適用してやればまさに爆弾が爆発したような演出が可能になります。

サンプル

当然ですが、Rigidbodyコンポーネントをアタッチしておく必要があります。
そのコンポーネントに対してAddExplosionForceを適用すると爆発の威力が該当GameObjectに適用されます。

Rigidbody rigidbody = GetComponent<Rigidbody>();
rigidbody.AddExplosionForce(m_force, m_position, m_radius);

Ragdollを設定する

次に、モデルデータにRagdollを設定します。これは、モデルのボーンを指定すると適切にコライダとジョイントを設定してくれる便利ツールとなっています。(デフォルトの機能です)
設定に関してはこちらの記事(UnityでRagdoll物理)が参考になります。

以下のメニューからRagdollを選択します。

Kobito.XlgEsN.png


注意点

Rigidbodyは追加しない

今回のサンプルを作成するにあたって注意点と微妙にハマりポイントがあったので書いておきます。

まず、冒頭ではRigidbodyが必要だと書きましたが、Ragdollを適用すると各体の部位にコライダとRigidbodyが追加されます。
なので改めて設定する必要はありません。

RagdollのRigidbodyすべてにAddExplosionForceを適用する必要がある

Ragdollで適用されたRigidbodyは複数あります。
今回の例のように爆風のような演出をする場合はそれらすべてのRigidbodyAddExplosionForceを適用する必要があることに注意が必要です。(こちらの記事を参考にしました(AddExplosionForce on ragdolls | Unity Answers))


以上を適用すると冒頭のアニメーションGifのような演出が達成できます。

その他メモ

爆風のエリア内にどんなゲームオブジェクトがあるかはPhysics.OverlapSphereを使うと便利です。

Physics.OverlapSphereの定義

public static Collider[] OverlapSphere(Vector3 position, float radius, int layerMask = AllLayers);

Colliderを検出する範囲を示す球体の中心位置と半径を渡すと、その範囲内にあるColliderが配列で返ってきます。

15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?