溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Raycasting光線投射

發(fā)布時(shí)間:2020-07-04 19:26:39 來(lái)源:網(wǎng)絡(luò) 閱讀:2230 作者:Aonaufly 欄目:開(kāi)發(fā)技術(shù)

游戲開(kāi)發(fā)人員可以使用光線投射,用于像瞄準(zhǔn),確定視線,測(cè)量距離之類的動(dòng)作。Unity當(dāng)中的Raycast的重載有很多?,F(xiàn)在展示最常用的2中方法

bool Raycast( Vector3 origin , Vector3 direction , float distance ,LayerMask mask );

參數(shù)解釋
 origin : 是光線的開(kāi)始位置
 direction : 光線的方向
 distance : 光線行進(jìn)的距離(可為null)
 mask : 確定光線會(huì)撞上哪一層(可為null)


如果要確定攝像機(jī)前確定是否有某個(gè)物體,可以用如下代碼

void Update(){
    if (Physics.Raycast(transform.position , transform.forward , 10 )){
        print("there is something in front of the camera!");
    }
}

注意此代碼放在camera中


另一個(gè)

bool Raycast( Vector3 origin , Vector3 direction , out RaycastHit hit , float distance );

這個(gè)重載方法使用了一個(gè)RaycastHit類型的參數(shù) , 它是光線碰撞到的對(duì)象

void Update(){
    float dirX = Input.GetAxis("Mouse X");
    float dirY = Input.GetAxis("Mouse Y");
    transform.Rotate(dirY , -dirX , 0 );
    UptateRaycastHit();
}
void UpdateRaycastHit(){
    RayCastHit hit;
    if( Physics.Raycast( transform.position , transform.forward , out hit ) ){
        Distroy( hit.collider.gameObject )
    }
}


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI