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