Rigidbody.AddExplosionForce

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

参数

explosionForce爆炸力(可以根据距离进行修改)。
explosionPosition表示爆炸波及范围的球体的中心。
explosionRadius表示爆炸波及范围的球体的半径。
upwardsModifier调整爆炸的视位,呈现掀起物体的效果。
mode用于将力施加到其目标的方法。

描述

向模拟爆炸效果的刚体施加力。

爆炸被建模为一个在世界空间中具有特定中心位置和半径的球体;通常情况下,球体外的任何对象都不会受到爆炸的影响,力与到中心的距离成反比。但是,如果传递零值作为半径,则不管刚体距离中心多远,都将施加全部的力。

默认情况下,力的方向为从爆炸中心到刚体质心的直线。如果为 upwardsModifier 参数传递非零值,则会对方向进行修改(从中心点的 Y 分量中减去该值)。例如,您向 upwardsModifier 传递了值 2.0,则爆炸看似发生在其实际位置下方 2.0 单位处,并据此计算力方向(即,不修改效果的中心和半径)。您可以使用该参数轻松实现将物体抛向空中的爆炸效果,这通常比简单地施加向外的力更明显。

力只能应用于处于活动状态的刚体。如果 GameObject 处于非活动状态,则 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); } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961