【Unity】ScreenToWorldPoint转换三维空间MousePosition

踩坑记录:

使用ScreenToWorldPoint一般会出现诸如如下代码

Camera.main.ScreenToWorldPoint(Input.mousePosition)

此时的转换,如果是2D模式下,那么直接使用即可,没有问题,因为2D中,Z默认为0

如果在3D环境下转换,不能直接将input.mousePosition作为参数传入ScreenToWorldPoint,而是要传入指定平面位置的Z值。

并且相机的模式也要注意

相机设置为正交模式:

下面写法也可以直接在Z=0的三维空间,正确转换坐标

Camera.main.ScreenToWorldPoint(Input.mousePosition)

相机设置为透视模式:

这种写法只会永久返回当前主摄像机的transform位置,跟mousePosition为多少没有任何关系

Camera.main.ScreenToWorldPoint(Input.mousePosition)

这种写法,Z轴传入主摄像机的Z值,

Camera.main.ScreenToWorldPoint
(new Vector3(mousePos.x, mousePos.y, Camera.main.transform.position.z)

返回的值,不会只死锁定成主摄像机自己的位置值了,可以在鼠标移动时有改变,但是结果不正确

根据目前项目需求,将摄像机设置成正交来使用,可以获取正确位置了。透视相机如何正确获取转换后的位置,待补充。

相关推荐

  1. 【Unity】ScreenToWorldPoint转换三维空间MousePosition

    2024-07-10 16:48:04       11 阅读
  2. 视觉SLAM14精讲——三维空间刚体运动1.1

    2024-07-10 16:48:04       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 16:48:04       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 16:48:04       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 16:48:04       4 阅读
  4. Python语言-面向对象

    2024-07-10 16:48:04       5 阅读

热门阅读

  1. AD确定板子形状

    2024-07-10 16:48:04       8 阅读
  2. ELK优化之Elasticsearch

    2024-07-10 16:48:04       12 阅读
  3. QianfanLLMEndpoint和QianfanChatEndpoint的区别

    2024-07-10 16:48:04       10 阅读
  4. MMSegmentation笔记

    2024-07-10 16:48:04       9 阅读
  5. 网络安全筑基篇——XSS、XML、XXE

    2024-07-10 16:48:04       10 阅读
  6. 语义熵:深度学习中的信息度量新指标

    2024-07-10 16:48:04       9 阅读