using UnityEngine;
using System.Collections;
public class Layer : MonoBehaviour {
public int layerMask=0; //定义一个int类型的变量,用来存储碰撞的层
void Start ()
{
}
void Update ()
{
//从摄像机发射一条射线到屏幕上的一点,这个点我们在括号中定义的是我们鼠标点击点击的一个点
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//是一个结构体,用于存储射线碰撞返回的信息
RaycastHit hit;
//第一个参数是我们的射线ray,第二个参数是返回的碰撞信息,第三个参数是摄像能够碰撞到的距离,第四个参数就是我们的碰撞层 如果返回真就是执行下面的代码
if (Physics.Raycast(ray,out hit,100,layerMask))
{
Debug.Log("名字是"+hit.collider.gameObject);
}
}
}
在场景中建了五个物体
UIPlan 对应的Layer层是UI;
DefaultCube 对应的层是Default;

这篇博客介绍了Unity中LayerMask的规律,通过实验展示了如何根据Layer的数值进行射线检测。内容包括不同mask值对应能被射线检测到的物体,如DefaultCube、TransparentFXSphere、IgnoreRaycastCylinder和WaterCapsule。总结得出,LayerMask的值对应2的幂次,想要同时检测多个层,只需将对应层的mask值相加。作者欢迎读者纠正错误。
4万+

被折叠的 条评论
为什么被折叠?



