Unity屏幕坐标转世界坐标,鼠标点击获取三维位置
Raycast():检测射线碰撞的第一个物体信息
//鼠标右键if (Input.GetMouseButtonDown(1)) {//发射射线//Ray ray = new Ray();//创建射线Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//射线检测:得到射线跟碰撞体组件碰撞的位置//Physics.Raycast();if (Physics.Raycast(ray, out RaycastHit raycastHit )) {print(raycastHit.point)//打印射线碰撞的三维的世界坐标}}
参数内容大致为:射线、长度、out碰撞信息输出、限制可被检测到的layer层。
layer层控制
layer层一共有32个,由一个int类型数字表示,四个字节32位分别表示对应的layer层
例:使得射线不与Model层发生碰撞
//得到表示Model层的位为0,其他位为1,使得其他层均可检测,Model不可int layerMask = ~(1 << 10);Physics.Raycast(ray, out RaycastHit raycastHit, layerMask)
RaycastAll():检测射线碰撞的多个物体信息
RaycastHit[] hitInfo = Physics.Raycast(ray)