unity中有关于鼠标位置的函数,Input.mousePosition。但不得不说,这个函数不到位,可以用一个print函数输出一下这个坐标会发现,只有X,Y值在改变,Z值没有发生变化,并且在屏幕的左下角固定为(0,0,0),查看文档后发现,文档上是这么写的。

The current mouse position in pixel coordinates. (Read Only)

当前所在像素坐标的鼠标位置(只读)。

The bottom-left of the screen or window is at (0, 0). The top-right of the screen or window is at (Screen.width,Screen.height).

屏幕或窗口的左下角是坐标系的(0,0)坐标。右上角的坐标是(屏幕宽度值,屏幕高度值)。

即我们得到的坐标是其实是摄像机显示画面的坐标,就是我们屏幕的坐标,我直接就纠结了,这怎么办?

在近1个小时的文档查看过程中还是没有找到有关鼠标位置的函数,但是偶然间看到了一个射线的方法

原来是用这种方式做的啊!!

找到目标后开始研究这个射线函数,霍霍,ScreenPointToRay这个太到位了!

Returns a ray going from camera through a screen point.

返回一条射线从摄像机通过一个屏幕点。

Resulting ray is in world space, starting on the near plane of the camera and going through position's (x,y) pixel coordinates on the screen (position.z is ignored).

产生的射线是在世界空间中,从相机的近裁剪面开始并穿过屏幕position(x,y)像素坐标(position.z被忽略)。

Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight).

屏幕空间以像素定义。屏幕的左下为(0,0);右上是(pixelWidth,pixelHeight)。

这就明白了,函数给我们的是一条射线,起点是摄像机,且射线过屏幕上的一点,屏幕上的点不就是mousePosition吗,解决了!

c#

if (Input.GetMouseButton(0)) {
   //Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
   Ray ray = camera.ScreenPointToRay(Input.mousePosition);

上面注释掉的函数:当你的脚本没有绑在mainCamera上时,又想用MainCamera做原点是使用。

接下来我们来试一下效果到底行不行,继续写void Update()

//这段代码是我照文档改的,自己似懂非懂,请各位读者指点

RaycastHit hit;//

if(Physics.Raycast(ray, out hit))//函数是对射线碰撞的检测,这个out是什么意思?
   {
     Point = hit.point;//得到碰撞点的坐标
    print (Point);//输出一下
    print("I'm looking at " + hit.transform.name);//输出碰到的物体名字
   }

unity3d鼠标点击,获取世界坐标相关推荐

  1. 获取窗口句柄模拟鼠标点击

    一.任务要求. 需要我们编写一个程序能够自动的进行某些鼠标点击的操作.比如某个客户端,我们利用程序,可以自动点击操作. 二.需求分析. 为了实现这种要求,我们必须首先获得需要操作窗口的句柄.其次是点击 ...

  2. 入门C语言第三话:数组之实战篇——扫雷(进阶版——图形化界面,递归展开,播放音乐与音效,标记取消雷,记录雷的个数,鼠标点击,文末附有完整代码)

    文章目录 前言 每日鸡汤 基本思路 衔接基础班扫雷 准备阶段 正文 一.雷盘信息的存储 1.设置雷盘11*11与初始化 2.放置雷 3.放置雷周围的信息 二.图形化界面 1.创建与初始化窗口 2.加载 ...

  3. HQChart使用教程67 - 鼠标点击K线柱子监听事件

    HQChart使用教程67 - 鼠标点击K线柱子监听事件 点击K线事件 步骤 1. 注册监听事件 事件回调函数说明 参数说明: K线数据说明 交流QQ群: 950092318 HQChart代码地址 ...

  4. python鼠标点击位置_python鼠标点击位置 Python3怎么模拟鼠标点击?

    Python3怎么模拟鼠标点击? Python3怎么模拟鼠标点击?最好简单一点的方法 import win32api,win32condef click(x,y): win32api.SetCurso ...

  5. CTreeCtrl::SelectItem 光标 模拟鼠标点击

    CTreeCtrl::SelectItem 光标 模拟鼠标点击 (2010-12-02 17:37:14) 转载▼ 标签: selectitem 光标 模拟鼠标 分类: C /VC/WM/MFC 我想 ...

  6. C#控制鼠标点击,移动,滑轮滚动

    前不久无意中发现了一款手机上的软件,看新闻就可以得金币,通过金币可以换取RMB,怀着好奇,我下载了并且点击进去查看了,通过使用,发现这款软件获取金币的方法很简单,就是点击一篇新闻,进去后,隔一段时间滑 ...

  7. 转: C#控制鼠标点击,移动,滑轮滚动

    C#控制鼠标点击,移动,滑轮滚动 2018年04月15日 23:41:57 阅读数:40 前不久无意中发现了一款手机上的软件,看新闻就可以得金币,通过金币可以换取RMB,怀着好奇,我下载了并且点击进去 ...

  8. java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件

    不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件 关注:54  答案:3  信息版本:手机版 电脑版 解决时间 2021-01-13 04:21 提问者少走感情路 2021-01-12 08:3 ...

  9. special effects - 鼠标点击,出现烟花炸裂效果

    鼠标点击,出现烟花炸裂效果 一. 效果图 二. 实现代码 一. 效果图 二. 实现代码 <!DOCTYPE html> <html><head><meta c ...

最新文章

  1. C++ 获取当前时间的年,月,日,以及时分秒
  2. Linux 网络编程—— libpcap 详解
  3. java valueof的用法_Java SignStyle valueOf()用法及代码示例
  4. f12获取网页文本_怎么获取网页源代码中的文件?
  5. 处理时间_3_计算两个时间列工作日差值
  6. ih5长图如何滑动_长图怎么一键截取?这样做很简单
  7. 在SQL Server 2005中解决死锁(转)
  8. Spring对java模块化支持_Spring项目对JDBC的支持和基本使用
  9. 【代码笔记】iOS-字体抖动动画
  10. 5月22日晚间,阿里巴巴集团发布2020财年业绩……
  11. 怎么查看页面跳转过程_faststone注册码怎么获取?英文官网打不开
  12. Ubuntu上,如何成功的安装pygrib
  13. CREATE TABLE TEST_A AS SELECT * FROM TEST_B
  14. 中医药天池大数据竞赛——中医文献问题生成挑战(一)
  15. python星号直角三角形边长公式_直角三角形求边长公式图解
  16. Autosar Dcm模块之Vector Configurator Pro配置(DSP子模块)
  17. 努力和家境哪个更重要
  18. 微信小程序聊天功能PHP,微信小程序实现聊天室
  19. zynq学习笔记之petalinux (1)安装Ubuntu16.04.1
  20. 切披萨n块需要几刀原理c语言,LeetCode 1444. 切披萨的方案数(DP)

热门文章

  1. 获取地址eth,usdt 余额及最早一次交易记录
  2. 数学(二)三角求导公式总结
  3. 面试-Django实现注册短信验证码发送
  4. Simulink|电动汽车、永磁电动机建模与仿真
  5. 人变瘦最快的方法是什么?
  6. 瑞萨单片机之开发环境的搭建(一)
  7. Leetcode:最长公共前缀
  8. 将键盘上数字与对应的符号互换
  9. 正确打开adams软件_ADAMS软件的基本操作上机实验一
  10. 汽车电子(四)--- 车机电源介绍