Unity基础的射线使用和坐标转换

来源:互联网 发布:电话销售数据货源qq群 编辑:程序博客网 时间:2024/06/05 03:20

前段时间有个Kinect的项目,是人体绑定模型之后推车,说是推车其实是触摸场景中车尾部的三个球体,摸左边代表向右推,摸右边代表向左推,中间代表直行。当时的想法是将三个球体和手部模型的坐标换算到屏幕上,判断距离。说实话很不精确,也怪当时太蠢,还有事多,还有懒,还有态度的不端正。

现在我重新做个demo,因为没有Kinect的关系就用鼠标来控制模型。

首先搭建场景,三个球一个cube


首先要让cube跟着鼠标移动

void Update () {
        Vector3 mouse = Input.mousePosition;
        Vector3 pos = Camera.main.ScreenToWorldPoint(mouse);
        pos.z = 1;//没有这句 cube的Z轴就会跟相机等值 所以显示不出cube 实际在后面的代码中,cube是不是相对于球体在前面并没有区别
        cube.transform.position = pos;
}


然后将cube从世界坐标转到屏幕坐标然后发出射线

 void LateUpdate() {
        Vector3 cubePos = Camera.main.WorldToScreenPoint(cube.transform.position);
        Ray ray = Camera.main.ScreenPointToRay(cubePos);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit, 100f))
        {
            Debug.Log(hit.transform.name);
            hit.transform.GetComponent<MeshRenderer>().material.color = new Color32(237, 240, 0, 70);
        }
        else {
            for (int i = 0; i < CubeControllers.childCount; i++) {
                CubeControllers.GetChild(i).GetComponent<MeshRenderer>().material.color = new Color32(255, 255, 255, 70);
            }
        }
    }


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为荣耀8忘记解锁密码怎么办 华为手机内存满了怎么办 华为手机无限重启怎么办 华为3c重启怎么办 荣耀6 无限重启怎么办 手机进水无法开机了怎么办 华为手机不停重启怎么办 华为手机反复重启怎么办 酷派电池不耐用怎么办 美图手机充电慢怎么办 酷派b770太卡怎么办 酷派手机出现无命令怎么办 华为荣耀4x卡怎么办 华为手机图案解锁忘了怎么办 xp电脑读不起u盘怎么办 在外国玩王者卡怎么办 华为p7忘记解锁密码怎么办 华为荣耀4x存储空间不足怎么办 红米4a内存不够怎么办 华为h60开不了机怎么办 华为荣耀4c内存不足怎么办 华为4c运行内存不足怎么办 华为手机总是显示内存不足怎么办 华为荣耀4x畅玩版内存不足怎么办 三星手机忘了解锁密码怎么办 荣耀8密码忘了怎么办 华为4x开不了机怎么办 华为指纹和密码解锁解不开怎么办 华为荣耀5x死机怎么办 华为荣耀开不了机怎么办 荣耀10开不了机怎么办 乐视pro3变砖了怎么办 手机升级后开不了机怎么办 华为g750开不了机怎么办 手机变砖怎么办插电没反应 变砖手机不通电怎么办 小米手机充电口坏了怎么办 小米2s尾插坏了怎么办 小米手机充电插口坏了怎么办 一条网线上两个亚马逊账号怎么办 加拿大28输20万怎么办