public class shexian : MonoBehaviour { Camera cam;//用于发射射线的相机 void Start () { cam =this.GetComponent<Camera>(); } void Update () { if (Input.GetMouseButtonDown(0)) { TarRaycast(); } } Vector3 mp ;//鼠标位置 Transform targetTransform;//点选的物体 public LayerMask targetingLayerMask;//指定射线能检测到的Layermask层 private float targetingRayLength = Mathf.Infinity;//射线的长度 public void TarRaycast() { targetingLayerMask.value = 1 << 10; //不懂的看最下边的几颗栗子~ mp = Input.mousePosition; targetTransform = null; if (cam != null) { RaycastHit hitInfo; Ray ray = cam.ScreenPointToRay(new Vector3(mp.x, mp.y, 0f)); if (Physics.Raycast(ray.origin, ray.direction, out hitInfo, targetingRayLength, targetingLayerMask.value)) { targetTransform = hitInfo.collider.transform; } } //得到被点选的物体后,对其进行操作~ if (targetTransform != null) { Debug.Log(targetingLayerMask.value); Debug.Log(targetTransform.name); Debug.Log("总感觉这其实就是天津饭的洞洞波嘛~"); } } }
关于LayerMask的使用,简单举个栗子~
:
1 << 10 打开第10层。
~(1 << 10) 打开除了第10之外的层。
~(1 << 0) 打开所有的层。
(1 << 10) | (1 << 8) 打开第10和第8的层。
<( ̄3 ̄)> 那么,说好的栗子呢!
原文:http://www.cnblogs.com/Feiyuzhu/p/4647626.html