首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Camera.main.ScreenToWorldPoint(Input.mousePosition)总是返回相机位置,不管我点击哪里

Camera.main.ScreenToWorldPoint(Input.mousePosition) 是 Unity 引擎中的一个方法,用于将屏幕坐标转换为世界坐标。如果你发现这个方法总是返回相机的位置,而不是你点击的位置,可能是以下几个原因:

原因分析

  1. 相机设置问题
    • 确保相机没有被设置为屏幕空间模式(Screen Space),因为在这种模式下,ScreenToWorldPoint 方法的行为会有所不同。
    • 确保相机的 Projection 属性设置为透视投影(Perspective),而不是正交投影(Orthographic)。在正交投影下,ScreenToWorldPoint 可能不会按预期工作。
  • 坐标转换问题
    • Input.mousePosition 返回的是屏幕坐标,通常是左下角为原点的坐标系。确保你在转换时考虑到了这一点。
    • 确保你在调用 ScreenToWorldPoint 时传递的是正确的参数。例如,如果你传递的是 Vector3.zero,那么结果自然是相机的位置。
  • 事件触发问题
    • 确保你在正确的时机调用 ScreenToWorldPoint 方法。例如,在鼠标点击事件触发时调用。

解决方法

  1. 检查相机设置
    • 确保相机的 Render Mode 设置为 Perspective
    • 确保相机的 Projection 属性设置为 Perspective
  • 正确使用 ScreenToWorldPoint 方法
  • 正确使用 ScreenToWorldPoint 方法
  • 这里传递了一个 Vector3,其中 xy 是屏幕坐标,z 是相机的世界坐标位置的 z 值。这样可以确保转换后的点在相机的同一平面上。
  • 确保在正确的时机调用
    • 通常在鼠标点击事件触发时调用该方法。例如:
    • 通常在鼠标点击事件触发时调用该方法。例如:

参考链接

通过以上步骤,你应该能够解决 Camera.main.ScreenToWorldPoint(Input.mousePosition) 总是返回相机位置的问题。如果问题仍然存在,请检查其他可能影响坐标转换的因素,如场景中的其他变换或脚本。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Unity - 在鼠标点击位置放置对象

    目录: 1.基本信息 2.示例工程 3.脚本 目标 这篇博客的主要目标是告诉你使用鼠标点击位置拾取或放置对象的做法。 你最终会得到下面的效果: ?...如果你想在屏幕上某个点击位置实例化一个游戏对象,那么首先你就需要找到世界点。...我们将会使用鼠标的位置把对象放置到世界坐标的位置。可以使用下面的函数来获得鼠标的位置Input.mousePosition,这个函数返回了以像素的为单位的位置。所以我们需要把它转换成世界坐标的位置。...为了转换鼠标的位置为世界坐标的位置,我们将使用下面的函数:Camera.main.ScreenToWorldPoint,这个函数会把屏幕的坐标转换成世界坐标。...现在我们可以使用这个位置把对象放置在鼠标点击的地方。现在通过使用这个函数,我们会创建一个简短的演示程序。

    5.2K20

    理解Unity3D中的四种坐标体系

    一个相机对应一个视口,视口预览( Camera Preview )展示了相机所看到的所有物体,很显然,它默认大小是 (width = 1, height = 1) ,位置也是从 0 到 1 ,这个位置就是我们所讨论的坐标系...虽然重要,其实屏幕坐标系处理起来很简单直接, Input.mousePosition 获取的就是鼠标在屏幕中的位置坐标。...记住一点,任何情况下: transform.position 都是返回物体的世界坐标值,及时你所使用的是子物体!...另外,从上面所讲的屏幕坐标系转换成世界坐标系也是非常简单的,它以当前相机为参考: var position = Input.mousePosition; var worldPoint = Camera.main.ScreenToWorldPoint...我举个例子,我们在游戏开发中会遇到这种情况,你的相机如果直接放到世界中那么必然会需要调整它的旋转角度才能达到满意的视口位置,如何不让相机产生任何旋转就能把世界中的游戏物体放到合适的视口位置呢?

    5.2K32

    Unity基础(10)-坐标系统

    transform.LocalPosition可以获得该局部坐标 2-3 屏幕坐标系 屏幕坐标系:以像素为单位,左下角是(0,0),右上角为(screen.width, screen.height),Z的位置是以相机的世界单位来衡量及物体离相机远近...{ screenPos = Input.mousePosition; } 注意点 相机如何渲染物体 摄像机对游戏世界的渲染范围是一个平截头体,渲染边界是一个矩形,用与near clippingplane...X,Y表示像素坐标,根据(X,Y)相对于屏幕的位置,得到游戏世界中的点相对于截面P的位置,也就将屏幕坐标转换为了世界坐标。...2-4 viewport (视口坐标) 视口坐标:视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点, Z的位置是以相机的世界单位来衡量的。...worldPos = Camera.main.ScreenToWorldPoint(Vector3.zero); private void OnGUI() { GUILayout.TextArea

    4.9K20

    Unity基础(20)-Camera类

    摄像机组件 照相机是玩家观察世界的装置,屏幕空间点按像素定义,屏幕的左下为(0,0);右上是(pixelwidth,pixelHeight),z位置在照相机的世界单位中。 ?...正向渲染总是被使用。 Size:设置为“正交”时,“相机”的视口大小。 Cliping Planes:从相机到开始和停止渲染的距离。 Near :相对于相机的最近点将出现绘图。...Far :相对于相机的最远点将出现绘图。 ViewportRect:视口矩形 四个值指示屏幕上的相机视图将被绘制的位置。在视口坐标中测量(值为0-1)。 Depth:相机位置按照画图顺序。...通过cullingMask可以使得当前摄像机有选择性地渲染场景中的部分物体,默认cullingMask =-1即渲染场景中的任何物体,cullingMask = 0时渲染场景中的任何物体。...此方法的返回值受当前摄像机在世界坐标系的位置Camera的FieldOfView的值以及Position的共同影响 ublic class ViewportToWorldPoint : MonoBehaviour

    2.7K30

    【100个 Unity实用技能】| Unity 查询游戏对象位置是否在NavMeshAhent烘焙上的网格上

    ) maxDistance:在距 sourcePosition 的此距离内检测 areaMask:指定在找到最近的点时允许的NavMesh区域 返回值: 如果找到最近的点,返回true ; 未找到则返回...如果此步骤未在指定距离内找到投影点,则将采样扩展到周围的 NavMesh 位置。 根据到查询点的距离查找最近的点。此功能不考虑障碍物。...具体实例: 当鼠标点击场景中的游戏对象时,查询该物体的坐标是否在导航网格中,在的话返回true,不在则返回fasle; 简单搭建一个场景测试,然后渲染一下导航网格,忘记NavMeshAhent导航怎么用了可以查看该文章回顾一下...: Unity零基础到入门 ☀️| 万字教程 对 Unity 中的 Navigation导航系统基础 全面解析+实战演练【收藏迷路】 完整代码如下: using UnityEngine; using...Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast

    1.7K30

    HALCON相机标定相机内参相机外参

    博主写作不容易,还是需要您鼓励 万水千山总是情 , 先点个赞行不行 博主写作不容易,还是需要您鼓励 万水千山总是情 , 先点个赞行不行 如果大家看完这一篇文章后还想深入了解相机标定...如果正常,用相机厂家软件关闭相机并且断开连接(这很重要,要不halcon连不上相机),记住停止采集代表断开连接!!!...把相机固定好 2.接下来使用halcon连接相机 点击助手,点击打开新的ImageAcquisition。 选择图像获取接口,点击自动检测检测相机类型。...前边大家用相机厂家的软件打开了相机,那么说明大家都安装了相机厂家halcon连接的sdk,所以接口是可以检测到的,如果没安装相机厂家的软件要安装哦,不然连接上。有啥不懂留言问我。...1点击采集按钮采集标定板图像 2删除标志点提取失败的图像 3图像数量为3框不提示图像数量太少为止 4可以识别的标定板图像要把相机视野覆盖完全,哪里没有覆盖到可以点击show查看。

    3.3K30

    “不务正业”的Grasshopper动画系列指南(基础篇)

    想做某个参数的动画时,就在对应控制的Slider上右键点击即可弹出视窗,点击“OK”就会输出,这个视窗需要修改的参数很多,我简单介绍一下: ?...接着再讲讲镜头和视角,一般基础的动画有两种做法,第一种情况就是镜头不动,画面主体物进行变化,这时候你往往需要控制和储存相机位置,从而在工作流的修改和迭代中保持画面大的连续性。...在Rhino中的话,点这个小相机就可以啦,弹出面板,点击储存为,并命名这个新的视图,储存完以后记得锁定视图。当然你也可以对一段动画设置好几个相机位置,相当于“多机位拍摄”。...Grasshopper并没有自带控制相机的功能,所以如果写代码的话,就要通过插件来帮助我们控制相机位置。我常用的控制相机位置的插件是Heteroptera、Animation、还有VRay。...主要的参数其实大同小异,相机位置,目标位置相机焦距。控制的就是相机摆在哪里,对着哪里,能看到的视野的范围,都是以点的形式输入。 ? ? ? ? ?

    4.1K41

    99%的人都不知道的,高级搜索技巧!精度提升 10 倍!

    使用方式: 手机 OR 相机 电脑 OR 鼠标 OR 键盘 它等同于 (手机 OR 相机) (电脑 OR 鼠标 OR 键盘) ?...---- 4、逻辑非:- 逻辑非 - ,也就是减号,代表搜索包含减号后面的词的页面。使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词。...---- 7、in指令: 位置关键词查找 intitle: 在网页标题中查找。这通常对讨论比较多的热门话题很有效。...比如在Google 搜索 :inanchor:点击这里 返回的结果页面本身并不一定包含“点击这里”这四个字,而是指向这些页面的链接锚文字中出现了“点击这里”这四个字。...使用方法: inanchor:点击这里 ? ? 7.3、intitle 指定返回的页面 title 中包含关键词。Google 和bd都支持intitle 指令。

    34.8K177

    后端说:只是你不懂怎么用 headers!

    这样的回答没毛病,毕竟全部一次性返回给我,sql 查询是挺费事的,不过这只不过是一个 demo 系统,演示给客户看的,再说目前会有多少条数据,即便是百万条数据,mysql 的查询性能我想也不会很差,毕竟您不要做一下...response.headers 存总页码,那就别怨我在 request.headers 里面给你传递 page,毕竟我不懂 header~~~ 顺便提一下,我存在 headers里面了,我测试分页,发现不管我点击哪个页面...,后端返回总是第一页的数据,那么我敢断定,后端取参数,肯定不是从 headers 里面取的 page 本来easy 的事情,你非要搞这么复杂,何必呢,跟我显摆什么呢。。。...你返回的 response.headers 里面的分页数据又在哪里? ? ?...那你 tm 如果按照我说的去配置,你 tm 取给我看看? 你自己说的话,是不是啪啪啪打脸? ?

    79570

    初识视觉SLAM:用相机解决定位和建图问题

    管我们在哪里招呼一声,它都会滴溜溜地走过来。 要移动首先得有轮子和电机,所以我们在小萝卜的下方安装了轮子(足式机器人步态很复杂,我们暂时不考虑)。...相对地,那些携带于机器人本体上的传感器,比如激光传感器、相机、轮式编码器、惯性测量单元(Inertial Measurement Unit,IMU)等,它们测到的通常都是一些间接的物理量而不是直接的位置数据...例如,轮式编码器会测到轮子转动的角度,IMU测量运动的角速度和加速度,相机和激光传感器则读取外部环境的某种观测数据。我们只能通过一些间接的手段,从这些数据推算自己的位置。...它往往更加简单,携带昂贵的镜头,而是以一定速率拍摄周围的环境,形成一个连续的视频流。普通的摄像头能以每秒钟30张图片的速度采集图像,高速相机则更快一些。...深度相机(又称RGB-D相机,在本书中主要使用RGB-D这个名称)是2010年左右开始兴起的一种相机,它最大的特点是可以通过红外结构光或Time-of-Flight(ToF)原理,像激光传感器那样,通过主动向物体发射光并接收返回的光

    1.3K20

    摄影机-跟随玩家并添加背景视差

    让我们将cameraNode的位置更改为(x:0,y:0)。单击文档大纲中的场景,然后选择摄像机的cameraNode。 小心!...相机位置 在“ 游戏循环”部分中,标记新的子部分并将其命名为“ 相机”。为了使相机跟随播放器,我们将把相机的x位置改变为与播放器的x位置相同。...在GameScene.sks中,记住操纵杆的位置是(x:-300,y:-100)。因此,在相机位置之后,让操纵杆跟随相机。 禁区 每个游戏都有禁区,那些是玩家无法通过的地方。...月亮和星星将跟随相机,使它们保持静止。如果我们添加这些移动动作,当玩家离开时它们将从场景中消失。 时间线动画 它是一种使用您运行时间来创建动画的关键帧的动画。...在SpriteKit场景中,您不必总是运行模拟器来预览动画。点击Animate,瞧,宝石现在已经动画了!要使其循环,请单击循环图标并选择无限图标。 结论 到目前为止,我们的游戏看起来很棒!

    1.3K30

    Unity通用渲染管线(URP)系列(一)——自定义渲染管线(Taking Control of Rendering)

    (使用自定义渲染管线) 1 新的渲染管线 当进行渲染的时候,Unity需要决定把它画成什么形状,以及画在哪里、什么时候画、用什么样的设定去画等等。它的复杂程度取决于涉及到多少的效果。...通过重写抽象方法CreatePipeline方法来完成,该方法需要返回RenderPipeline实例。但是因为我们还没有定义自定义RP类型,所以先返回NULL。...由于透明对象写入深度缓冲区,因此对它们进行前后排序没有任何性能上的好处。但是,当透明的物体在视觉上互相影响时,它们必须被画成正面,才能正确地融合在一起。...UI在场景窗口中呈现时总是使用World Space模式,这就是为什么它通常会变得非常大的原因。但是,尽管我们可以通过场景窗口编辑UI,但它并不会被绘制。 ?...点击 阅读原文 可以跳转原教程。 本文翻译自 Jasper Flick的系列教程 原文地址: https://catlikecoding.com/unity/tutorials

    17.1K136

    如何通过聊天定位对方的位置

    方式一:模糊定位 该定位方法只能定位到对方在哪个市,再具体的位置信息需要警察才有渠道和权限对拨号主进行查询。...1、在电脑上按下 “Windows图标键+R ”组合快捷键,打开运行对话框,输入cmd,然后点击确定。...3、上面一步做好后,点击要查看那个人的QQ,给他发个聊天信息,他回复你信息(会建立TCP链接)。...对方用手机拍摄一张照片,通过QQ或者微信发“原图”给你,你接收原图,即可定位图片拍摄的精确位置,就可以知道他大概在哪里。 1、拍摄照片的手机需要打开GPS定位。...博主是在景区拍的照片,误差超过一公里(误差大小取决于所用地图和EXIF经纬度信息转换出来的精度,小数越多越准) 补充 EXIF是一种图像文件格式,它的数据存储与JPEG格式是完全相同的。

    14K41
    领券