unity3d 射線的原理,基礎(chǔ)用法

Ray射線類(lèi)和RaycastHit射線投射信息類(lèi)是射線中常用的兩個(gè)工具類(lèi)。
用途:射線多用于碰撞檢測(cè)(如:射擊游戲里是否擊中目標(biāo))、角色移動(dòng)、判斷是否觸碰到3D世界中的哪些物體對(duì)象,進(jìn)而操作等。
基礎(chǔ)API:
Ray 射線類(lèi) :【使用鼠標(biāo)拾取或者判斷子彈是否碰到對(duì)象,需要往特定方向發(fā)射射線。方向可能是世界坐標(biāo)中的一個(gè)矢量方向,或屏幕上某一點(diǎn)。針對(duì)后者,提供了兩個(gè)API,如下:】
1、Ray Camera.main.ScreenPointToRay(Vector3 pos) 返回一條射線Ray從攝像機(jī)的近口點(diǎn)nearClip到屏幕指定一個(gè)點(diǎn);若射線未碰撞到物體[需要含有碰撞器組件],碰撞點(diǎn)hit.point的值是(0,0,0);pos:利用實(shí)際像素值表示射線到屏幕上的位置。pos的x或者y分量由0增到最大值,射線將由一邊移到另一邊。但pos是在屏幕上,故z分量始終是0;
2、Ray Camera.main.ViewportPointToRay(Vector3 pos) 返回一條射線Ray從攝像機(jī)到視口(視口之外無(wú)效)指定一個(gè)點(diǎn);pos:用單位化比例值的方式表示射線到屏幕上的位置。
RaycastHit 光線投射碰撞信息:
1、bool Physics.Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask)
射線與碰撞器發(fā)生碰撞時(shí)返回真,否則未穿過(guò)任何碰撞器則返回false?!緊rigin:在世界坐標(biāo)中射線起點(diǎn);direction:射線的方向矢量;distance:射線長(zhǎng)度,即起點(diǎn)到設(shè)定的終點(diǎn)的距離,默認(rèn)是無(wú)限長(zhǎng);layerMask:顯示層掩碼,指定層次的碰撞器碰撞,其他層次的碰撞則會(huì)被忽略掉?!?br> 2、 bool Physics.Raycast(Ray ray, Vector3 direction, RaycastHit out hit, float distance, int layerMask)
在場(chǎng)景中投下可與所有碰撞器碰撞的一條光線,并返回碰撞的信息,包括位置等的信息。
3、 bool Physics.Raycast(Ray ray, float distance, int layerMask)
當(dāng)光線投射與任何碰撞器交叉時(shí)為真,否則為假。
4、 bool Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit out hit,float distance, int layerMask)
當(dāng)光線投射與任何碰撞器交叉時(shí)為真,否則為假。
注:如果從一個(gè)球型體的內(nèi)部到外部用光線投射,返回為假。
  distance: 射線的長(zhǎng)度
  hit: 使用c#中out關(guān)鍵字傳入一個(gè)空的碰撞信息類(lèi),然后碰撞后賦值??梢缘玫脚鲎参矬w的transform,rigidbody,point等信息。
  layerMask: 只選定Layermask層內(nèi)的碰撞器,其它層內(nèi)碰撞器忽略。 選擇性的碰撞
5、RaycastHit[] RaycastAll(Ray ray, float distance, int layerMask)
投射一條光線并返回所有碰撞,也就是投射光線并返回一個(gè)RaycastHit[]結(jié)構(gòu)體。
6、layerMask:共有32個(gè)層,對(duì)應(yīng)使用一個(gè)32位整數(shù)的個(gè)位來(lái)表示每個(gè)層級(jí),這個(gè)位為1示使用該層,為0表示不使用該層。
射線的講解很清楚的一個(gè)鏈接:https://blog.csdn.net/u013490128/article/details/53317996

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容