1. 程式人生 > >unity射線檢測忽略某層的方法

unity射線檢測忽略某層的方法

unity中的射線檢測方法Physics.Raycast,可以從目標點朝目標方向發射一條無限長或固定長度的射線,此外我們可以設定其與特定層的碰撞:

Ray ray = new Ray(Vector3.zero, Vector3.forward);
int layerMask = 1 << 10;
if (Physics.Raycast(ray, 30.0f, layerMask))
{
    ......
}

這樣就可以檢測在目標方向上30距離內是否有第10層的物體存在。

在Edit->Project Settings->Tags and Layers中可以看到Layers的編號
此外,如果想射線不與某層發生碰撞,只需要將layerMask按位求補,表示檢測除第10層以外的層的碰撞:

Ray ray = new Ray(Vector3.zero, Vector3.forward);
int layerMask = 1 << 10;
layerMask = ~layerMask;
if (Physics.Raycast(ray, 30.0f, layerMask))
{
    ......
}

這樣Raycast將無視與第10層的碰撞。

layermask引數設定的一些總結:
1 << 10 開啟第10的層。
~(1 << 10) 開啟除了第10之外的層。
~(1 << 0) 開啟所有的層。
(1 << 10) | (1 << 8) 開啟第10和第8的層。

相關推薦

unity射線檢測忽略方法

unity中的射線檢測方法Physics.Raycast,可以從目標點朝目標方向發射一條無限長或固定長度的射線,此外我們可以設定其與特定層的碰撞: Ray ray = new Ray(Vector3.zero, Vector3.forward); int

unity碰撞檢測和觸發器的方法函式

碰撞檢測涉及三個函式: 當與物體碰撞的一瞬間:OnCollisionEnter(Collision  collision),collisionInfo是撞到的物體的碰撞資訊; 當在與物體持續碰撞接觸期間:OnCollisionStay(Collision collisio

unity 射線檢測(簡易版)

void Update () {         if (Input.GetMouseButton(0))         {             Ray

unity深度查找個子物體和遍歷所有子物體方法

new cal ons foreach 是我 destroy 目標 call void 本文總結一下關於unity的查找子物體的方法 首先說明一下這裏將講三種查找子物體方法: 查找固定路徑的某一個子物體的方法、通過名字深度查找某個子物體的方法、查找父物體下所有子物體的方

Unity基礎篇:解決漏檢測問題(射線檢測,輸入檢測,點選檢測

今天我在做專案的時候,發現我滑鼠實際點選數和Unity感應到的數量不一樣。 同樣的,這也就導致了一系列問題。 鍵盤輸入漏檢測 滑鼠輸入漏檢測 射線漏檢測 我大概想了一下,應該是檢測更新速度不夠,所以會漏掉我的輸入。 出現問題了,我們就要解決問題。經過摸索,解

Unity射線/右鍵點選一點會使物體跟隨至滑鼠點選位置/計算目標物體距離滑鼠點選位置的距離

public class MyRay : MonoBehaviour { public GameObject GameObject;//要例項化的物體 粒子特效 public GameObject Player; private Animation ani;

Unity射線&自動尋路/右鍵點選一點會使物體跟隨至滑鼠點選位置/計算目標物體距離滑鼠點選位置的距離

public class MyRay : MonoBehaviour { public GameObject GameObject;//要例項化的物體 粒子特效 public GameObject Player; // private Animation ani; priva

Unity 判斷 滑鼠/觸控 位置是否在指定Ui上,非射線檢測方式。觸屏移動物體。

事出有因: 1.專案的觸控點選事件,並且有手指縮放/移動功能。 2.unity本身支援touch功能,這個不多說。 3.當做手指縮放/移動的時候就要判斷touch點位置了,但是如果不加任何判斷則會亂套。 如:本來想移動A(讓A跟隨 手指touch 的座標就行了),但是如果我在B區域觸控並

Unity 釋出WebGL 關於射線檢測

今天做WebGL,其中涉及到射線檢測RaycastHit hit;if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))在Unity上執行沒有問題,但是釋出網頁版之後就執

Unity中計算一個方法的耗時的幾種方法

1、Time.time 在一幀內,Time.time只會賦值更新一次,所以一幀內獲取不到時間差值。 2、Stopwatch 例項可以測量一個時間間隔的執行時間,也可以測量多個時間間隔的總執行時

Unity射線基礎技巧附加檢測的小例子(Unity萌新的備忘錄)

最近開始研究U3D,它的強大就不多說了, 今天研究了研究射線相關東西,總結了些東西放上來,一來做個筆記,二來和大家分享分享!嘿嘿~ 如果有不對的地方希望指出哈 !- _ - 進入正題 射線:射線是3D世界中一個點向一個方向發射的一條無終點的線,在發射軌跡

直播筆記 | Unity射線檢測詳解

本文首發於洪流學堂微信公眾號。 洪流學堂,學Unity快人幾步 什麼是射線(Ray)? 射線檢測能用來做什麼? 檢測游標位置的三維物體 檢測角色前面的物體(自動開門) 從空中向下檢測(凹凸不平的地形的瞬移) 測量距離(鐳

Unity - Raycast 射線檢測

本文簡要分析了Unity中射線檢測的基本原理及用法,包括: Ray 射線 RaycastHit 光線投射碰撞資訊 Raycast 光線投射 SphereCast 球體投射 OverlapSphere 相交球等 專案地址:Raycast - SouthBegonia Ray 射線 含義:官方解釋

unity 2種實現動態障礙方法

必須 tar 模糊 ont 支持 獨立 com new bst 此文將介紹2種實現動態障礙的方法,一種基於navmesh,一種基於astar算法。 1.基於navmesh。   1.制作場景障礙:     a.有幾個獨立的障礙物,就定義幾個user area,即,一個場景僅

cocos 射線檢測 3D物體 (Sprite3D點擊)

get director 轉化 cocos hello dir 調用 true 得到 看了很多朋友問怎麽用一個3D物體做一個按鈕,而且網上好像還真比較難找到答案, 今天翻了一下cocos源碼發現Ray 已經封裝了intersects函數,那麽剩下的工作其實很簡單了, 從屏幕

Unity一個彈痕的簡單實現方法

註意 allow 由於 div img determine 效率 pda 場景 之前知道一個方法比較復雜就是取出貼圖,類似於從上到下從左到右的去遍歷一張圖,去除像素點改變像素點。今天在選丞大佬那看到下面這個方法,覺得十分簡單,原理應該是相同的吧。 官方文檔: https:/

iOS-網絡檢測的幾種方法

else required 判斷網絡狀態 sha geb all ane mes nsinteger 1.AFN框架中的:AFNetworkReachabilityManager //AFN判斷網絡 -(void)getInternetStatue{ // 1.獲得網絡監控

linux設置http/https proxy及忽略proxy的方法

http proxy bypass http proxy 忽略http proxy http proxy設置 linux http代理 一,場景:有些linux服務器處於內網,並且沒有公網ip,故要想與外網進行http/https通信只能通過nat或者加proxy的方式。nat服務器有網段

解決linux netcore https請求使用自簽名證書忽略安全檢查方法

mva supported support ali figure -s issue 大致 iss 當前系統環境:centos7 x64. dotnet 2.0. 不管是 ServicePointManager.ServerCertificateValidationCallb

Spring Cloud啟動應用時指定IP或忽略張網卡配置

cond 網絡配置 生態 onf docs col mas utils efault 說明:分布式應用部署到服務上,由於服務器可能存在多張網卡,造成IP地址不準的問題。 解決方法: 1、直接添加忽略某張網卡的配置: spring.cloud.inetutils.i