explosionForce | 爆炸力(可能受距离影响)。 |
explosionPosition | 爆炸影响范围内的球体的中心。 |
explosionRadius | 爆炸影响范围内的球体的半径。 |
upwardsModifier | 对爆炸的表观位置进行调整,使其看起来像是在抬升物体。 |
mode | 用于将力应用于目标的方法。 |
对刚体应用力,模拟爆炸效果。
爆炸被建模为一个在世界空间中具有特定中心位置和半径的球体;通常,球体外部的任何东西都不会受到爆炸的影响,并且力会随着距离中心的距离而减小。但是,如果将半径的值设置为零,则无论中心距离刚体有多远,都会应用全部力。
此函数在刚体表面上最靠近explosionPosition
的点上对物体应用力。力沿着从explosionPosition
到刚体表面点的方向作用。如果explosionPosition
在刚体内部,或者刚体没有活动碰撞器,则使用质心而不是表面上的最靠近点。
力的幅度取决于explosionPosition
和应用力点之间的距离。随着explosionPosition
和力点之间的距离增加,实际应用的力减小。
可以使用upwardsModifier
修改力的垂直方向。如果此参数大于零,则力将应用于刚体表面上最靠近explosionPosition
的点,但沿 y 轴移动负upwardsModifier
。使用此参数,可以使爆炸看起来像是在将物体抛向空中,这比简单的向外力更具戏剧性。只能对活动刚体应用力。如果游戏对象处于非活动状态,则 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); } } }