アタッチされたコライダーのバウンディングボックスに最も近い位置
これは爆発のダメージを適用する際に衝撃を与える点を計算するのに使用できます。 または 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 ExampleClass : 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 public class ExampleClass(MonoBehaviour): public hitPoints as float = 10.0F def ApplyHitPoints(explosionPos as Vector3, radius as float) as void: closestPoint as Vector3 = rigidbody.ClosestPointOnBounds(explosionPos) distance as float = Vector3.Distance(closestPoint, explosionPos) damage as float = (1.0F - Mathf.Clamp01((distance / radius))) damage *= 10 hitPoints -= damage