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)