Class Functions
1)
static function Raycast (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
在origin坐標上建立一個方向為direction,距離為distance的射線,可以與layerMask(層遮罩)之外的所有的collider碰撞;
返回true如果碰撞到任何物體,否則返回false。 distance默認為無限遠,layerMast默認為kDefaultRaycastLayers
只與第一個接觸到的物體產生碰撞。
static function Raycast (origin : Vector3, direction : Vector3, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
多了一個out hitInfo: RaycastHit, 如果碰撞到物體,具體碰撞數據和被碰撞體都會被記錄在RaycastHit上,包括碰撞位置,碰撞位置法線,被碰撞體的Transform節點等信息。其他一樣。
腳本:
var explosionPosition: Vector3;
var hit: RaycastHit;
if(Physics.Raycast(transform.position,target.position,hit,100)){
explosionPosition=hit.point;
}
static function Raycast (ray : Ray, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
static function Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
直接由一個射線ray來指示位置和方向。其他一樣。
2)
static function RaycastAll (ray : Ray, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : RaycastHit[]
static function RaycastAll (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layermask : int = kDefaultRaycastLayers) : RaycastHit[]
與所有在ray這條射線上的物體碰撞並返回所有被碰撞體,RaycastHit[]。 其他同RaycastAll一樣。
3)static function Linecast (start : Vector3, end : Vector3, layerMask : int = kDefaultRaycastLayers) : bool
static function Linecast (start : Vector3, end : Vector3, out hitInfo : RaycastHit, layerMask : int = kDefaultRaycastLayers) : bool
從start到end畫一條直線,其他與Raycast和RaycastAll類似。 這個通常可以用於檢測AI是否能看到目標物體等功能。
4)
static function OverlapSphere (position : Vector3, radius : float, layerMask : int = kAllLayers) : Collider[]
檢測在position位置的半徑radius的球形范圍內是否存在可碰撞體並返回所有檢測到的collider
5)
static function CheckSphere (position : Vector3, radius : float, layerMask : int = kDefaultRaycastLayers) : bool
當任何物體碰到position位置的半徑為radius的球形范圍時返回true;
6)
static function CheckCapsule (start : Vector3, end : Vector3, radius : float, layermask : int = kDefaultRaycastLayers) : bool
當任何物體碰到定義的膠囊體范圍時返回true;
7)
static function IgnoreCollision (collider1 : Collider, collider2 : Collider, ignore : bool = true) : void
控制collider1和collider2 是否可以碰撞。 ignore=true 兩者將不會計算是否碰撞, ignore=false 則計算兩者是否有碰撞。