码迷,mamicode.com
首页 > 编程语言 > 详细

【Unity】鼠标指向某物体,在其上显示物体的名字等等等等信息

时间:2015-07-15 14:51:02      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

之前一直用NGUI HUD Text插件做这个功能,感觉一个小功能就导一个插件进来简直丧心病狂。然后就自己写了一个~思路和插件的方式大同小异。但是呀但是呀~我的这小思路看起来绝对比插件的方便啊~因为呀因为呀,我的就这一个功能啊~

小二,上代码~~~

 Camera cam;//用于发射射线的相机
    Camera UIcam;//UI层的相机

    Vector3 mp;//鼠标位置

    Transform targetTransform;//点选的物体
    public UILabel Lab;
   
    void Start ()
    {
        cam =this.GetComponent<Camera>();
        UIcam = GameObject.Find("Camera").GetComponent<Camera>();
        Lab = GameObject.Find("Label").GetComponent<UILabel>();
    }


    void Update()
    {
        if (TarRaycast())  //判断鼠标是否指在某物体上
        {
            //这里转换坐标的时候我用的是“指定物体y轴方向向上0.3f处”,当然只是大体保证了匹配位置,最好的方式是手动指定,即提前手动拖一个空物体至“有需要点击的物体”下,固定其合适位置,然后坐标用这个空物体的~
            Vector3 pos = cam.WorldToViewportPoint(targetTransform.position + new Vector3(0, targetTransform.localScale.y / 2 + 0.3f, 0));
            Lab.transform.position = UIcam.ViewportToWorldPoint(pos);
            Lab.text = targetTransform.name;
        }
    }
    //射线检测部分,不懂可看我之前的文章~
    public bool TarRaycast()
    {
        Lab.text = null;
        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))
            {
                targetTransform = hitInfo.collider.transform;
                return true;
            }
        }
        return false;
       
    }
}

 

【Unity】鼠标指向某物体,在其上显示物体的名字等等等等信息

标签:

原文地址:http://www.cnblogs.com/Feiyuzhu/p/4648164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!