explosionForce | 爆発の力(距離によって変更される可能性あり) |
explosionPosition | 爆発の影響があるエリア内の中心 |
explosionRadius | 爆発の影響があるエリア内の球体の半径 |
upwardsModifier | オブジェクトを持ち上げたように見せる爆発の見かけ上の位置に対する調整 |
mode | ターゲットに力を適用するのに使用される方法 |
爆発のエフェクトをシミュレートするために Rigidbody に力を適用させます。
爆発は、ワールド空間における爆発影響が及ぶ範囲や特定の中心位置でオブジェクト範囲としてモデル化されます。通常、オブジェクト範囲外では、爆発による影響は受けません。また、力は中心から遠ざかるにしたがって減少します。しかし、0 の値が Radius に渡された場合、リジッドボディから中心まで遠いにかかわらず最大限の力が適用されます。
デフォルトでは、力の方向は爆発の中心からリジッドボディの質量中心に向かっていくラインです。upwardsModifier
パラメータに非 0 の値を渡した場合、方向は中心点の Y コンポーネントからの値を引いて変更されます。例えば、upwardsModifier
の2.0 の値を渡した場合、爆発は力の方向を算出する目的で、実際の位置2.0以下のユニットが中心になるように見えます(すなわち、爆発影響の中心と半径は変更されません)。このパラメータを使用すると、単に外部へ向かう力よりしばしば劇的な演出効果を与えることができる空中の上方にオブジェクトを投げるように見える爆発を簡単に作ることができます。
力は、アクティブのリジッドボディにのみ適用することができます。ゲームオブジェクトが非アクティブの場合、AddExplosionForce は効果がありません。
using UnityEngine; using System.Collections;
// Applies an explosion force to all nearby rigidbodies public class ExampleClass : MonoBehaviour { public float radius = 5.0F; public float power = 10.0F;
void Start() { Vector3 explosionPos = transform.position; Collider[] colliders = Physics.OverlapSphere(explosionPos, radius); foreach (Collider hit in colliders) { Rigidbody rb = hit.GetComponent<Rigidbody>();
if (rb != null) rb.AddExplosionForce(power, explosionPos, radius, 3.0F); } } }