unity射線檢測碰撞

2021-10-24 10:47:20 字數 582 閱讀 3120

使用普通的碰撞體檢測,檢測時不連續的,是每隔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...