Unity play模式下选中物体的三种方式

Posted 都是为了学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity play模式下选中物体的三种方式相关的知识,希望对你有一定的参考价值。

射线检测(需要碰撞器)

// 创建一条点击位置为光标位置的射线
Ray rays = Camera.main.ScreenPointToRay(Input.mousePosition);
//将射线以黄色的表示出来
Debug.DrawRay(rays.origin, rays.direction * 100, Color.yellow);
//创建一个RayCast变量用于存储返回信息
RaycastHit hit;
//将创建的射线投射出去并将反馈信息存储到hit中
if (Physics.Raycast(rays, out hit))

//获取被射线碰到的对象transfrom变量
target = hit.transform.position;

target就是被选中的物体的坐标

屏幕坐标对比(不需要碰撞器)

	//设置鼠标点击的精度
    WHrate = (float)Screen.width / (float)Screen.height;
    xdelta = Screen.width * delta / WHrate;
    ydelta = Screen.height * delta;
    Vector3 screenPos;
    Vector3 mousePos;
    foreach (Vector3 v3 in positions)
    
        //把包围盒中心点转化为屏幕坐标
        screenPos = Camera.main.WorldToScreenPoint(v3);
        mousePos = Input.mousePosition;

        //如果鼠标点击的位置在包围盒中心点屏幕坐标的一定范围内
        if (mousePos.x >= screenPos.x - xdelta && mousePos.x <= screenPos.x + xdelta
            && mousePos.y >= screenPos.y - ydelta && mousePos.y <= screenPos.y + ydelta)
        
            target = v3;
            break;
        

    

包围盒(不需要碰撞器)

//判断模型的包围盒是否与射线交互
if (meshes[i].bounds.IntersectRay(rays))

target = meshes[i].bounds.center;
break;

以上是关于Unity play模式下选中物体的三种方式的主要内容,如果未能解决你的问题,请参考以下文章

Unity鼠标带动物体运动的三种方法

Unity3D中三种调用其他脚本函数的方法

Unity中获取物体的尺寸(size)的三种方法

工具篇Unity翻书效果的三种方式

Unity UGUI - Canvas 画布

Unity UGUI - Canvas 画布