layerMask是遮罩层,使用RayCast可以屏蔽或者只投射遮罩层中的物体。代码如下;
<span style="white-space:pre"> </span>Ray ray;
RaycastHit hit;
public Transform playerTF;
public Camera cameraAnother;
int layerMask = 1<<8;
void Update () {
if (Input.GetMouseButton(0)) {
ray = cameraAnother.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast(ray,out hit,Mathf.Infinity,layerMask)) {
Debug.DrawLine(ray.origin,hit.point,Color.cyan);
playerTF.GetComponent<NavMeshAgent>().SetDestination(hit.point);
}
}
}
layerMask = 1<<8 投射第8层;
~layerMask 投射8层之外;
~(1<<0) 投射所有层;
(1 << 9) | (1 << 8) 投射第9和第8的层。
在物体的layer中,可以选择ignoreRayCast,则不投射该层。