unity相机视角平移一段距离

这篇具有很好参考价值的文章主要介绍了unity相机视角平移一段距离。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

	--重点局部坐标 (目标点可能有旋转)
	例如物体A的世界坐标坐标为(1,2,3),物体B的世界坐标为(2,2,2),现在需要计算物体B相对于物体A的局部坐标,则应该使用A.transform.InverseTransformPoint(B)

	--移动相机使  场景内的目标点在屏幕中心 的方法
	1.计算目标点相对相机的坐标InverseTransformPoint
	2.上面的结果就是相机需要移动的距离(无视Z值)

	--如果是移动相机使  场景内的目标点在屏幕中某一点 的方法
	--还需要计算相机UV挪动
    --正确思路
	--0.算出目标在屏幕的UV
	--1.根据UV 和  目标点相对相机坐标系下的距离offsetZ值
	--2.然后算出相机视锥内  四个视锥点 
	--3.根据UV算出相对相机的坐标 转成世界坐标
     */
    public Vector3 OffsetPosByUV(float offsetZ, float uvx = 0.5f, float uvy = 0.5f)
    {
        Vector2 uv = new Vector2(uvx, uvy);
        if (Camera == null)
            return Vector3.zero;
        if (Mathf.Approximately(uv.x, 0.5f) && Mathf.Approximately(uv.y, 0.5f))
            return Vector3.zero;
        Camera.CalculateFrustumCorners(viewRect, offsetZ, Camera.MonoOrStereoscopicEye.Mono, frustumCorners);
        //frustumCorners 视锥平面四个角落点坐标
        float x = Mathf.Lerp(frustumCorners[2].x, frustumCorners[0].x, uv.x);
        float y = Mathf.Lerp(frustumCorners[1].y, frustumCorners[0].y, uv.y);
        return Camera.transform.TransformVector(new Vector3(x, y, 0));//换算出世界坐标插值
    }


    /// <summary>
    /// 返回相机坐标
    /// </summary>
    /// <param name="offsetZ"></param>
    /// <param name="uv"></param>
    /// <param name="target"></param>
    /// <returns></returns>
    public Vector3 OffsetPosByUV2(float offsetZ, float uvx  , float uvy , Transform target)
    {
        Vector3 worldPos = OffsetPosByUV(offsetZ, uvx, uvy);  // 相机不动,算出屏幕uv上z轴上所在的世界位置,
        Vector3 targetOffset = Camera.transform.position - worldPos;
        return targetOffset + target.position;
    }

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

到了这里,关于unity相机视角平移一段距离的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【计算机视觉:算法和应用】第二章:图像形成——2.3数码相机

    2.1几何图元与变换 2.2相机辐射成像        从一个或多个光源开始,在世界中一个或多个表面反射并通过相机镜头后,光最终到达成像传感器。到达传感器的光子是如何转换为我们在数字图像上看到的数字(R,G,B)值的呢?在这一节,我们构建了一个简单的模型来解释大多数

    2024年01月19日
    浏览(67)
  • unity中如何切换相机视角

      简单配置一些参数 ,

    2024年04月08日
    浏览(38)
  • 【Unity】实现相机跟随及视角转动

    【unity】实现相机跟随,人物移动请参照【Unity】 实现角色移动、视角旋转以及跳跃 1.创建一个 Camera ,将 Camera 置于物体 Player 下 随意拖动 Camera 到合适的位置 具体参数【仅供参考】 运行效果如下 1.创建两个空物体 CameraHandle 和 Pivot ,将相机拖动到Pivot下,具体如图所示 其中

    2023年04月27日
    浏览(50)
  • Unity SKFramework框架(十七)、FreeCameraController 上帝视角/自由视角相机控制脚本

    目录 一、简介 二、功能 1.键盘控制平移 2.鼠标控制平移 3.视角拉近拉远 4.绕视角中心旋转 5.视角聚焦 6.活动区域限制 7.闲置时绕视角中心旋转 三、核心变量  FreeCameraController是用于上帝视角、自由视角的相机控制脚本,同时支持Input System Package(New)和Input Manager(Old)新、旧两种

    2023年04月08日
    浏览(41)
  • 【Unity细节】为什么按下移动键之后,物体还是会滑行一段距离(阻力都无穷大了)

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏 :unity细节和bug 😶‍🌫️优质专栏 ⭐【软件设计师高频考点暴击】 为什么按下移动键之后,物体还是会滑行一段距离? 😶‍🌫️原因1:物体的阻力是不

    2024年02月03日
    浏览(65)
  • 【unity3D】如何修改相机的默认视角

    💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的如何修改相机的默认视角 Game窗口运行的话视角是这样的: 此时Scene窗口的视角是这样的,可以观察到人物变化,但是我现在需要游戏运行起来从Game窗口进行操作来观察

    2024年02月09日
    浏览(40)
  • cesium相机视角跳转定位方法汇总

           下面汇总的相机视角跳转方法有很多种,都是 根据某一个经纬度高程坐标[x,y,z],Entity实体或者矩形四至范围[west , south , east , north] 作为视图跳转到目标范围的中心,然后在该位置上设置相机相对的偏移量,这个偏移量主要是设置相机的偏航角、航向角和翻滚角或者椭

    2024年04月24日
    浏览(39)
  • vue2 使用 cesium 【第二篇-相机视角移动+添加模型】

    搞了一阵子 cesium,小白入门,这东西很牛逼,但是感觉这东西好费劲啊!网上资料不多,每个人的用法又不一样,操作起来真的是绝绝子。之前写了一篇 vue2 使用 cesium 的博文,没有写完,本来想继续写来着,想了一下还是重新开一篇吧。上一篇说到了事件,今天不想写事件

    2024年02月11日
    浏览(48)
  • Cesium 中那些改变视角的方法,带你彻底了解 cesium 相机

    对于 cesium 的初学者来讲,相机是不可饶过的一部分知识,这篇文章我们就来彻底的玩一下 cesium 里的相机。 首先要搞清楚一个问题,cesium 视角的变动不止一个方法可以完成哦,viewer 本身就是有 flyTo 的方法的。不过 viewer 的 flyTo 和 camera 的 flyTo 还是有些区别的。 首先 viewe

    2024年02月07日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包