The closest point to the bounding box of the attached colliders.
This can be used to calculate hit points when applying explosion damage. Or calculating explosion forces that act on a point on the surface of the rigidbody.
var hitPoints : float = 10.0;
function ApplyHitPoints (explosionPos : Vector3, radius : float) {
// The distance from the explosion position to the surface of the rigidbody
var closestPoint : Vector3 = rigidbody.ClosestPointOnBounds(explosionPos);
var distance : float = Vector3.Distance(closestPoint, explosionPos);
// The hit points we apply fall decrease with distance from the hit point
var damage : float = 1.0 - Mathf.Clamp01(distance / radius);
// This is the final hitpoints we want to apply. 10 at maximum.
damage *= 10;
// Apply the damage
hitPoints -= damage;
}
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
public float hitPoints = 10.0F;
void ApplyHitPoints(Vector3 explosionPos, float radius) {
Vector3 closestPoint = rigidbody.ClosestPointOnBounds(explosionPos);
float distance = Vector3.Distance(closestPoint, explosionPos);
float damage = 1.0F - Mathf.Clamp01(distance / radius);
damage *= 10;
hitPoints -= damage;
}
}
import UnityEngine
import System.Collections
class example(MonoBehaviour):
public hitPoints as single = 10.0F
def ApplyHitPoints(explosionPos as Vector3, radius as single):
closestPoint as Vector3 = rigidbody.ClosestPointOnBounds(explosionPos)
distance as single = Vector3.Distance(closestPoint, explosionPos)
damage as single = (1.0F - Mathf.Clamp01((distance / radius)))
damage *= 10
hitPoints -= damage