注意:LayerMask是位掩码。使用LayerMask.GetMask和LayerMask.LayerToName可生成位掩码。 变量 value将层遮罩值转换为整数值。 静态函数 GetMask给定在 Tags and Layers manager 中由 Builtin 或 User Layer 定义的一组层名称,返回所有这些层名称的等效层遮罩。
LayerMask layer1 = (1 << 0); LayerMask layer2 = (1 << 0) | (1 << 5); Debug.Log(layer1.value); -->1 Debug.Log(layer2.value); -->33 //等效于: LayerMask layer3 = LayerMask.GetMask("Default","UI"); Debug.Log(layer3.value); -->33 //其他位操作方法: LayerMask layer4 =...
LayerMask mask = 1<<2|0<<4;表示开启Layer2并且同时关闭Layer4. 代码: 1usingUnityEngine;2usingSystem.Collections;34publicclassexample : MonoBehaviour {5LayerMask mask = ~(1<<3|1<<7);6voidUpdate() {7if(Physics.Raycast(transform.position, transform.forward,100, mask.value))8Debug.Log("Hit ...
LayerMask mask = 1<<2|0<<4;表示开启Layer2并且同时关闭Layer4. 代码: usingUnityEngine;usingSystem.Collections;publicclassexample:MonoBehaviour{LayerMaskmask=~(1<<3|1<<7);voidUpdate(){if(Physics.Raycast(transform.position,transform.forward,100,mask.value)Debug.Log("Hit something");}}...
LayerMask RenderingLayerMask -> 对应不同(Universal)Renderer(和RendererAsset设置) MotionVectorPassRequested ShaderTagID -> 对应“Lit”,“SimpleLit”和“UnLit”等内置或用户手动设置的TagID 至于RenderLoop.Sort阶段,自然是负责将ObjectData对象按规则排序,底层逻辑中ScriptableLoopObjectData是一个相对轻量化的结构...
//Way2:位操作方法LayerMask layer1 = (1<<0);LayerMask layer2 = (1<<0) | (1<<5);Debug.Log(layer1.value); -->1Debug.Log(layer2.value); -->33//等效于:LayerMask layer3 = LayerMask.GetMask("Default","UI");Debug.Log(layer3.value); -->33//其他位操作方法:LayerMask layer4 = ...
if (Physics.Raycast (_ray,out objhit, 100, mask.value)) { GameObject gameObj = objhit.collider.gameObject; Debug.Log("Hit objname:"+gameObj.name+"--Hit objlayerName:"+LayerMask.LayerToName (10)); } } }}创建2个cube,一个layer设置为:cube 一个layer设置为:Default运行如下: ===Ray只有...
~LayerMask.GetMask("Player", "Default"):检测除Player层和Default层之外的图层 QueryTriggerInteraction.Collider:检测开启触发器的碰撞体 QueryTriggerInteraction.Ignore:不检测开启触发器的碰撞体 QueryTriggerInteraction.UseGlobal:isTrigger钩选时检测,isTrigger不钩选时不检测 ...
layerMask参数: Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) 其实很简单:1 << 10 打开第10的层。 ~(1 << 10) 打开除了第10之外的层。 ~(1 << 0) 打开所有的层。
1、Unity3D 射线碰撞检测 +LayerMask 的使用 转个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停 止发射 。用途:在 unity 中射线应用范围比较广, 多用于碰撞检测 (如: 子弹飞行是否击中目标) 、角色移动 等。相关 API :1、Ray Camera.main.ScreenPointToRay(Vector3 pos)返回一条...