【Unity】鼠标点选物体

   
    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); } } }

 

  关于LayerMask的使用,简单举个栗子~

:

1 << 10  打开第10层。

~(1 << 10) 打开除了第10之外的层。

~(1 << 0) 打开所有的层。

(1 << 10) | (1 << 8) 打开第10和第8的层。

<( ̄3 ̄)> 那么,说好的栗子呢!

posted @ 2015-07-15 10:35  哎呦不能错喔  阅读(1078)  评论(0编辑  收藏  举报