Rigidbody.AddExplosionForce

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

Parámetros

explosionForceLa fuerza de la explosión (que puede ser modificada por distancia).
explosionPositionEl centro de la esfera dentro de que la explosión tiene su efecto.
explosionRadiusEl radio de la esfera dentro del que la explosión tiene su efecto.
upwardsModifierAjuste a la posición aparente de la explosión para que parezca levantar objetos.
modeEl método utilizado para aplicar la fuerza a sus objetivos.

Descripción

Aplica una fuerza a un rigidbody que simula efectos de explosión.

La explosión es modelada como una esfera con cierta posición central y radio en el espacio mundial; Normalmente, cualquier cosa fuera de la esfera no es afectada por la explosión y la fuerza disminuye en proporción a la distancia desde el centro. Sin embargo, si se pasa un valor de cero para el radio entonces la fuerza completa se aplicará independientemente de cuán lejos esté el centro del rigidbody.

Por defecto, la dirección de la fuerza es la línea que va desde el centro de explosión hasta el centro de masa del rigidbody. Si pasa un valor distinto de cero para el parámetro upwardsModifier, la dirección se modificará restando ese valor del componente Y del punto central. Por ejemplo, si pasa un valor de 2.0 para upwardsModifier, la explosión parecerá estar centrada en 2,0 unidades por debajo de su posición real para calcular la dirección de la fuerza (es decir, el centro y el radio de efecto no se modifican). Usando este parámetro, puede hacer que la explosión aparezca lanzar objetos al aire, lo que a menudo da un efecto más dramático que una simple fuerza hacia el exterior.

La fuerza solo se puede aplicar a un rigidbody activo. Si un GameObject está inactivo, AddExplosionForce no tiene efecto.

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