美文网首页
通过屏幕坐标转世界坐标ScreenToWorldPoint

通过屏幕坐标转世界坐标ScreenToWorldPoint

作者: 摸狗 | 来源:发表于2019-12-13 14:38 被阅读0次

昨天发现一个问题就是想把屏幕坐标点换算成世界坐标点,但是发现怎样都不能得到正确的值

Vector3 mouseWordDir = camera_.ScreenToWorldPoint(Input.mousePosition);
Debug.Log("mouseWordDir: " + mouseWordDir);
1.png

发现不管鼠标移动到哪里打印出来的点都是一样的。
于是就在网上查了一下发现如果你使用ScreenToWorldPoint方法时,传进来的参数要有一个z值,这个z值可以理解为
被点击的哪一个平面的z轴值,我这里地板panle是(0.0.0.5)所以我填了0.5

  Vector3 mouseWordDir = camera_.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,
                Input.mousePosition.y, 0.5));
Debug.Log("mouseWordDir: " + mouseWordDir);
2.png

现在值是会变了,但是跟我点击的点实际坐标不符合啊这是为什么。
重点来了!!
因为!
我们填的0.5f是世界坐标,我们要他先转换成屏幕坐标,在让他配合mouseposition。

  Vector3 playerWordDir = camera_.WorldToScreenPoint(new Vector3(0,0,0.5f));
  Vector3 mouseWordDir = camera_.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,
                Input.mousePosition.y, playerWordDir.z));
Debug.Log("mouseWordDir: " + mouseWordDir);

这样就可以得到正确的值啦!!!!!!!

还有另一种做法就是使用射线。
具体做法就是从摄像机发射一个射线到panle然后得到一个点,那个点就是真实的世界坐标。

相关文章

  • 通过屏幕坐标转世界坐标ScreenToWorldPoint

    昨天发现一个问题就是想把屏幕坐标点换算成世界坐标点,但是发现怎样都不能得到正确的值 发现不管鼠标移动到哪里打印出来...

  • Unity UI跟随

    //1.屏幕转世界坐标Vector3 Camera.main.ScreenToWorldPoint(new Vec...

  • 在unity中实现鼠标拖动物体移动

    主要步骤 得到物体屏幕坐标的Z值 物体由世界坐标转为屏幕坐标 得到鼠标的世界坐标(Z值是物体的屏幕坐标) 鼠标三维...

  • AR测量

    启动ARSession 提示检测状态 屏幕坐标转换成世界坐标 算出2个世界坐标的差值

  • OpenGL 坐标系

    OpenGL 坐标系可分为:世界坐标系和当前绘图坐标系。 世界坐标系 在OpenGL中,世界坐标系是以屏幕中心为原...

  • OpenGL 中坐标系的理解

    OpenGL坐标系可分为:世界坐标系和当前绘图坐标系。 世界坐标系:在OpenGL中,世界坐标系是以屏幕中心为原点...

  • NGUI,世界坐标,屏幕坐标转换

    其实这个网上教程已经很多,但是我还是需要发布这篇博文以作沉淀之用1.世界坐标转屏幕坐标假定世界有一点坐标为pos,...

  • 不接入第三方sdk来实现手机坐标逆编码地理

    一:android坐标常识 世界坐标体系:WGS-84通过手机等gps设备获取到的坐标都是世界坐标体系坐标,and...

  • 屏幕坐标系和世界坐标系

    我们电脑上通常看到别人说的距离多少px,其实大部分指的是屏幕坐标系,而屏幕坐标系和世界坐标系是不一样的,世界坐标系...

  • Unity 世界坐标与屏幕坐标

    世界坐标 在场景中添加物体都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。 ...

网友评论

      本文标题:通过屏幕坐标转世界坐标ScreenToWorldPoint

      本文链接:https://www.haomeiwen.com/subject/adufnctx.html