首页 > 编程语言 > 详细

【Unity】鼠标点选物体

时间:2015-07-15 10:57:25      阅读:188      评论:0      收藏:0      [点我收藏+]

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 ̄)> 那么,说好的栗子呢!

【Unity】鼠标点选物体

原文:http://www.cnblogs.com/Feiyuzhu/p/4647626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!