射線:射線是3D世界中一個點向一個方向發(fā)射的一條無終點的線,在發(fā)射軌跡中與其他物體發(fā)生碰撞時,它將停止發(fā)射 。
用途:射線應(yīng)用范圍比較廣,?多用于碰撞檢測(如:子彈飛行是否擊中目標)、角色移動等 等。
相關(guān)API:
1、Ray?Camera.main.ScreenPointToRay(Vector3?pos)返回一條射線Ray從攝像機到屏幕指定一個點
2、Ray?Camera.main.ViewportPointToRay(Vector3?pos)返回一條射線Ray從攝像機到視口(視口之外無效)指定一個點
3、Ray射線類
4、RaycastHit光線投射碰撞信息
5、bool?Physics.Raycast(Vector3?origin,?Vector3?direction,?float?distance,?int?layerMask)
當(dāng)光線投射與任何碰撞器交叉時為真,否則為假。
bool?Physics.Raycast(Ray?ray,?Vector3?direction,?RaycastHit?out?hit,?float?distance,?int?layerMask)
在場景中投下可與所有碰撞器碰撞的一條光線,并返回碰撞的細節(jié)信息()。
bool?Physics.Raycast(Ray?ray,?float?distance,?int?layerMask)
當(dāng)光線投射與任何碰撞器交叉時為真,否則為假。
bool?Physics.Raycast(Vector3?origin,?Vector3?direction,?RaycastHit?out?hit,float?distance,?int?layerMask)
當(dāng)光線投射與任何碰撞器交叉時為真,否則為假。
注意:如果從一個球型體的內(nèi)部到外部用光線投射,返回為假。
參數(shù)理解:
origin?:在世界坐標中射線的起始點
direction:射線的方向
distance:射線的長度
hit:使用c#中out關(guān)鍵字傳入一個空的碰撞信息類,然后碰撞后賦值。可以得到碰撞物體的transform,rigidbody,point等信息。
layerMask:?只選定Layermask層內(nèi)的碰撞器,其它層內(nèi)碰撞器忽略。選擇性的碰撞
6、RaycastHit[]?RaycastAll(Ray?ray,?float?distance,?int?layerMask)
投射一條光線并返回所有碰撞,也就是投射光線并返回一個RaycastHit[]結(jié)構(gòu)體。