版本: Unity 6 (6000.0)
语言英语
  • C#

Rigidbody.AddExplosionForce

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

切换到手册

声明

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

参数

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); } } }