Unity 屏幕坐标鼠位置 Input.mousePosition 转为UI物体的坐标

这篇具有很好参考价值的文章主要介绍了Unity 屏幕坐标鼠位置 Input.mousePosition 转为UI物体的坐标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方式一: 使用 RectTransformUtility.ScreenPointToLocalPointInRectangle

	/// <summary>
    /// 屏幕坐标转换成 UI 坐标
    /// </summary>
    /// <param name="targetParentRect"> 目标 UI 父物体的 RectTransform </param>
    /// <param name="mousePos"> 鼠标位置 </param>
    /// <param name="canvasCam"> 如果Canvas的渲染模式为: Screen Space - Overlay, Camera 设置为 null;
    /// Screen Space-Camera or World Space, Camera 设置为 Camera.main></param>
    /// <returns>UI 的局部坐标</returns>
    private Vector2 ScreenToUILocalPos(RectTransform targetParentRect, Vector2 mousePos, Camera canvasCam = null)
    {
        //UI 的局部坐标
        Vector2 uiLocalPos;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(targetParentRect, mousePos, canvasCam, out uiLocalPos);
        return uiLocalPos;
    }

赋值方式

// targetRect 目标物体,也就是UI物体
targetRect.localPosition = ScreenToUILocalPos(targetRect.parent as RectTransform, Input.mousePosition);

方式二: 使用 RectTransformUtility.ScreenPointToWorldPointInRectangle

/// <summary>
    /// 屏幕坐标转换成 UI 坐标
    /// </summary>
    /// <param name="targetRect"> 目标 UI 物体的 RectTransform </param>
    /// <param name="mousePos"> 鼠标位置 </param>
    /// <param name="canvasCam"> 如果Canvas的渲染模式为: Screen Space - Overlay, Camera 设置为 null;
    /// Screen Space-Camera or World Space, Camera 设置为 Camera.main></param>
    /// <returns> UI 的坐标 </returns>
    private Vector3 ScreenToUIWorldPos(RectTransform targetRect, Vector2 mousePos, Camera canvasCam = null)
    {
        //UI 的局部坐标
        Vector3 worldPos;
        RectTransformUtility.ScreenPointToWorldPointInRectangle(targetRect, mousePos, canvasCam, out worldPos);
        return worldPos;
    }

赋值方式

// targetRect 目标物体,也就是UI物体
targetRect.position = ScreenToUIWorldPos(targetRect, Input.mousePosition);

文章来源地址https://www.toymoban.com/news/detail-587246.html

到了这里,关于Unity 屏幕坐标鼠位置 Input.mousePosition 转为UI物体的坐标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity ShaderGraph】| 物体靠近时局部溶解,根据坐标控制溶解的位置【文末送书】

    前言 本文将使用ShaderGraph制作一个根据坐标控制溶解的位置,物体靠近局部溶解的效果,可以直接拿到项目中使用。 对ShaderGraph还不了解的小伙伴可以参考这篇文章:【Unity ShaderGraph】| Shader Graph入门介绍 | 简介 | 配置环境 | 窗口介绍 | 简单案例 下面就开始看一下具体的制作

    2024年02月05日
    浏览(39)
  • 【100个 Unity实用技能】☀️ | UGUI中 判断屏幕中某个坐标点的位置是否在指定UI区域内

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长

    2024年01月25日
    浏览(60)
  • C# 获取鼠标在屏幕中的位置(获取鼠标坐标)

    近段时间需要一个鼠标点击器,目前能找到的都不太符合使用要求,所以就准备自己写一个 如果需要显示文本就把int转换成string. 如果需要显示到窗体上可以把int转换成string 如果需要实时获取位置信息可以把GetMousePose()方法放到Timer定时器或者Thread子线程 具体如何选择看自己的

    2024年02月08日
    浏览(37)
  • unity的2d屏幕坐标转3d世界坐标

    1.使用ScreenToWorldPoint将获取的屏幕位置直接转成世界坐标:      坑1:获取的屏幕坐标Input.mousePosition是一个2d坐标,z轴值为0,这个z值是相对于当前camera的,为零表示z轴与相机重合了,因此给ScreenToWorlfdPoint传值时,不能直接传Input.mousePosition,否则获取的世界坐标永远只有一个

    2024年02月17日
    浏览(41)
  • Unity 物体固定屏幕尺寸(透视模式)

    如图所示物体远离摄像机后会被放大,靠近相机会被缩小,使得在屏幕上的大小保持不变; 导入插件后使用 gameObject.SetFixedScreenSize 即可启动固定屏幕尺寸功能

    2024年01月16日
    浏览(38)
  • Unity点击物体后,移动到物体所在位置

    脚本挂在被点击的物体上 脚本挂在角色控制器上 改进:使用Raycast中的LayerMask 创建“cube”层 将想要被检测的物体放入该层 3.1、 3D物体事件监听 在相机上挂Physics Raycaster组件 检查是否有EventSystem 将脚本挂在被点击的物体上 添加组件Event Trigger组件 3.2、 世界UI世界监听

    2024年02月07日
    浏览(50)
  • 【Unity入门】Input.GetAxis(““)控制物体移动、旋转

    Input.GetAxis(“”) 是 Unity 引擎中的一个方法,用于获取游戏玩家在 键盘 或 游戏手柄 上输入的某个轴(Axis)的值。这里的 “” 是一个字符串参数,表示要获取的轴的名称。 在 Unity 中,有多种轴类型,如 “Horizontal”(水平轴)、“Vertical”(垂直轴)、“Mouse X”(鼠标水平

    2024年01月17日
    浏览(38)
  • Unity中Shader的屏幕坐标

    Unity中Shader的屏幕坐标 屏幕归一化坐标 = 当前像素 总像素 屏幕归一化坐标 = frac{当前像素}{总像素} 屏幕归一化坐标 = 总像素 当前像素 ​ _ScreenParams 屏幕的相关参数,单位为像素。 x表示屏幕的宽度 y表示屏幕的高度 z表示1+1/屏幕宽度 w表示1+1/屏幕高度 UNITY_VPOS_TYPE screenPos

    2024年02月09日
    浏览(35)
  • 使用Unity的Input.GetAxis(““)控制物体移动、旋转

    ​Input.GetAxis(\\\"\\\") 是 Unity 引擎中的一个方法,用于获取游戏玩家在键盘或游戏手柄上输入的某个轴(Axis)的值。这里的 \\\"\\\" 是一个字符串参数,表示要获取的轴的名称。只要游戏运行Unity在后台就实时通过GetAxis这些定义好的方法帮你检测用户键盘、手柄、鼠标,你只需要用这个

    2024年02月08日
    浏览(49)
  • unity物体移动至指定位置

    在Unity中,物体的坐标分为 局部坐标 和 世界坐标 。 局部坐标是相对于物体的父对象的坐标系,而世界坐标是相对于场景的整体坐标系。 举个例子 将下面代码挂载到Sphere上 输出结果如下 如果想让物体运动到指定的位置,通常情况下是参考世界坐标系。因为世界坐标系是整

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包