Unity 常用射線檢測方法

2021-09-10 06:12:56 字數 839 閱讀 1536

1.普通射線檢測(一般用於檢測某乙個物體)

ray ray = camera.main.screenpointtoray(input.mouseposition);

debug.drawray(ray.origin ,ray.direction , color.red);

raycasthit hit;

if(physics .raycast (ray,out hit,int.maxvalue,1<2.直線射線檢測多個物體

ray ray = camera.main.screenpointtoray(input.mouseposition);

debug.drawray(ray.origin ,ray.direction , color.red);

raycasthit hit = physics.raycastall(ray, mathf.infinity, 1 << layermask.nametolayer("layername"));

if(hit .length >0)

}

3.球形射線檢測(一般用於檢測周邊物體)

int radius = 3;

collider cols = physics.overlapsphere(this.transform.position, radius, layermask.nametolayer("layername"));

if(cols.length >0)

}

畫出球形檢測範圍方法,可用

private void ondrawgizmos()

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 從...

unity射線檢測碰撞

使用普通的碰撞體檢測,檢測時不連續的,是每隔0.02秒進行的離散檢測,這樣在被檢測的物體速度比較快時,就會由直接穿過物體的可能,這個時候,就需要使用射線檢測了。為了實現高速狀態下的碰撞檢測,要使用連續的射線來完成這樣乙個功能。使用 new ray建立射線new ray 發射位置,發射方向乘上發射速度...