您好,登錄后才能下訂單哦!
這陣子通過看視頻,看書對(duì)unity中射線碰撞檢測(cè),有了一些了解,這里我把它總結(jié)一下寫下來,希望能幫助到你們,也希望通過各位大神來指正不足之處;
射線碰撞檢測(cè),就是由某一物體發(fā)射出一道射線,射線碰撞到物體之后,可以得到該物體的相關(guān)信息,然后就可以對(duì)該物體進(jìn)行一些操作的過程了。PS:個(gè)人見解;
射線的發(fā)射分為可見和不可見,可見的情況就是在游戲當(dāng)中你可以看到射線,而不可見就是游戲運(yùn)行時(shí),你只可以在Scene試圖下觀察到它,而這到射線又是存在的;
而其實(shí)兩者區(qū)別不大,關(guān)鍵是看你怎么用它了;
下面先看看不可見的情況吧,還是看代碼;
Ray ray=new Ray(transform.position,transform.forward*100); //定義一個(gè)射線對(duì)象,包含射線發(fā)射的位置transform.position,發(fā)射距離transform.forward*100; Debug.DrawLine(transform.position,transform.position+transform.forward*100,Color.red); //這個(gè)就是繪制出的射線了,包含發(fā)射位置,發(fā)射距離和射線的顏色; RaycastHit hitInfo; //定義一個(gè)RaycastHit變量用來保存被撞物體的信息; if(Physics.Raycast(ray,out hitInfo,100)) //如果碰撞到了物體,hitInfo里面就包含該物體的相關(guān)信息; { //hitInfo.point:碰撞點(diǎn)的位置; //hitInfo.normal:與碰撞點(diǎn)所在平面垂直的向量; //hitInfo.collider.gameobject:可以得到該物體上的所有信息了; }
另一種情況:需要在發(fā)射射線的物體上添加LineRenderer組件;
LineRenderer render; void start() { render=transform.GetComponent<LineRenderer>(); render.SetWidth(0.01f,0.01f); //SetWidth(startWidth,endWidth); render.SetColor(Color.red,Color.red); //SetColor(startColor,endColor); render.SetVertexCount(2); //設(shè)置頂點(diǎn)數(shù) } void Update() { Ray ray=new Ray(transform.position,transform.forward*100); //定義一個(gè)射線對(duì)象,包含射線發(fā)射的位置transform.position, // 發(fā)射距離transform.forward*100; RaycastHit hitInfo; //定義一個(gè)RaycastHit變量用來保存被撞物體的信息; if(Physics.Raycast(ray,out hitInfo,100)) //如果碰撞到了物體,hitInfo里面就包含該物體的相關(guān)信息; { //hitInfo.point:碰撞點(diǎn)的位置; //hitInfo.normal:與碰撞點(diǎn)所在平面垂直的向量; //hitInfo.collider.gameobject:可以得到該物體上的所有信息了; if(Input.GetMouseButtonDown(0)) { render.SetPosition(0,transform.position); //射線起始位置; render.SetPosition(1,transform.position+transform.forward); //射線方向; } render.SetVertexCount(0); //消除射線; } }
ok,簡(jiǎn)單吧,代碼是我直接在這上面寫的,有什么錯(cuò)誤,歡迎指正哦!共同努力,耶
免責(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)容。