使用普通的碰撞體檢測,檢測時不連續的,是每隔0.02秒進行的離散檢測,這樣在被檢測的物體速度比較快時,就會由直接穿過物體的可能,這個時候,就需要使用射線檢測了。
為了實現高速狀態下的碰撞檢測,要使用連續的射線來完成這樣乙個功能。
使用 new ray建立射線new ray(發射位置,發射方向乘上發射速度)
ray ray =
newray
(transform.position, transform.forward *
100)
;
使用physics.raycast(射線,out 被碰撞物體,最大檢測距離)(返回bool型別)射線檢測碰撞,並會返會被碰撞物體的資訊
raycasthit hitinfo;
//定義乙個raycasthit變數用來儲存被撞物體的資訊;
if(physics.
raycast
(ray,
out hitinfo,
100)
)//如果碰撞到了物體,hitinfo裡面就包含該物體的相關資訊;
Unity 射線檢測
要使用射線檢測,物體必須是觸發器或者碰撞器。什麼是觸發器,碰撞器請看 射線檢測函式在physics 類中。由於射線無法看見,除錯起來非常不方便。unity 給我們提供了乙個畫射線的方法debug.drawray,便於除錯。debug.drawray需要在update中使用,否則渲染一幀就會消失。一幀...
Unity 射線檢測
射線是乙個無窮的線,開始於origin並沿著direction方向。例 ray ray new ray new vector3 1,1,1 new vector3 0,0,0 例2 ray ray2 camera.main.screenpointtoray input.mouseposition 從...
Ray建立射線,碰撞檢測
建立射線,如下,表示只在2d layer下建立射線,表示只能檢測2d下的物件 ray ray camera.main.screenpointtoray input.mouseposition raycasthit hititem int layer 1 layermask.nametolayer 2...