Unity中LayerMask的學習手記

2021-07-11 17:20:34 字數 2061 閱讀 9868

unity中是用int32來表示32個layer層。int32表示二進位制一共有32位(0—31)。layermask實際上是用int32的32個位來表示每個層級,當這個位為1時表示使用這個層,為0時表示不用這個層。

**釋義:

layermask mask = 1 << 你需要開啟的layers層。

layermask mask = 0 << 你需要關閉的layers層。   等價於  layermask mask = ~( 1 << 你需要關閉的layers層。)

public static int onlyincluding(params int layers)

public static int everythingbut(params int layers)

static int makemask(params int layers)

return mask;

}

layer常用於相機渲染的控制和射線碰撞檢測。

2、raycasthit  --- 光線投射碰撞資訊

3、ray --- 射線類 

4、bool physics.raycast(vector3 origin, vector3 direction, float distance, int layermask)  --- 當光線投射與任何碰撞器交叉時為真,否則為假。

bool physics.raycast(ray ray, vector3 direction, raycasthit out hit, float distance, int layermask)  --- 在場景中投下可與所有碰撞器碰撞的一條光線,並返回碰撞的細節資訊()。

bool physics.raycast(ray ray, float distance, int layermask) --- 當光線投射與任何碰撞器交叉時為真,否則為假。

bool physics.raycast(vector3 origin, vector3 direction, raycasthit out hit,float distance, int layermask)   ---  當光線投射與任何碰撞器交叉時為真,否則為假。

ps: 如果從乙個球型體的內部到外部用光線投射,返回為假。

引數釋義:

origin: 在世界座標中射線的起始點

direction: 射線的方向

distance: 射線的長度

hit: 碰撞資訊類。可以得到碰撞物體的transform,rigidbody,point等資訊。 

layermask: 只選定layermask層內的碰撞器,其它層內碰撞器忽略。

if (input.getmousebuttondown (0)) 

camera tempcurrentcamera = tempgamecamera.pcamera;

ray ray = tempcurrentcamera.screenpointtoray(input.mouseposition);

raycasthit  hit;

physics.raycast(ray.origin,ray.direction,out hit);

debug.drawray(ray.origin, ray.getpoint(100000.0f), color.red);

}

5、ray camera.main.viewportpointtoray(vector3 pos) --- 返回一條射線ray從攝像機到視口(視口之外無效)指定乙個點

6、raycasthit raycastall(ray ray, float distance, int layermask) --- 投射一條光線並返回所有碰撞,也就是投射光線並返回乙個raycasthit結構體。

關於unity中BindChannels的理解

官方文件 乙個博主的部落格 其實 bindchannels 命令主要幹的事情,就是可以重新對映繫結語義的資料來源和目標硬體。部落格裡所舉的例子 就是改變了texcoord 紋理座標 儲存資料的位置順序。因為unity中一般會把 lightmap 的 uv 存在第2個texcoord中,也就是texc...

Unity中 噪音演算法

主要是利用 unity 的mathf.perlinnoise 函式 柏林雜訊 的不同尋常的功能。其中乙個例項 是生成 柏林雜訊。第二個例項是動畫效果 看似y軸 的隨機運動,對隨機的動畫來講很好啊!這樣設定 得到 函式的返回值是 0 12 一樣的輸入,輸出也必將是一樣的 比如下面的測試,輸出一直是 0...

unity 持續學習中

我常因含鹽量過高而合大佬們格格不入 public transform pivot 座標位置相關屬性 if pivot return transform 物件為什麼返回了布林值?滿臉問號 ray ray camera.screenpointtoray input.mouseposition priva...