(http://www.iverv.com/2014/04/unitylayermaskraycastlayer.html)
**ScreenPointToRay(Ray ray是射線;RaycastHit hitInfo是碰撞信息;float distance是碰撞距離;int layerMask是碰撞的層)
在使用Unity當中RayCast的方法,有時候會想要經由Layers來做過濾,這樣子就可以只在目標的Layer下判斷。
*layer總共32組,前8組Layer為系統預設,餘24組為使用者分類gameobject自訂。
電腦辨識的方式是1、2、4、8、16...(二進位來看是00000001、00000010、00000100、00001000、00010000
所以如果你要真正的對Layer 8過濾的話,使用應該要如此使用:
Physics.RayCast(...., 1 << 8); (使用二進位運算方法)
要用十進位的話實際上應該是:Physics.RayCast(..., 256);
如果要同時判斷多層的話也可以,把數值相加就好。
例如:Physics.RayCast(..., 1 << 2 | 1 << 3);
※ 概念操作步驟說明:
※ C# 操作步驟說明:
C/C++有這四種位元運算子,可用於任何資料型別,意即該型別有幾個 bits 就做幾個 bits 的運算:
意義 運算子 範例 a b c AND & c=a & b 1100 1101 1001 1110 1000 1100 OR | c= a | b 1100 1101 1001 1110 1101 1111 XOR ^ c= a ^b 1100 1101 1001 1110 0101 0011 NOT ~ c =~a 1100 1101 0011 0010