Unity3d 以鼠标位置点为中心缩放视角(正交模式下)

思路整理:

缩放前:

缩放后:

记录缩放前鼠标的屏幕坐标 A,计算鼠标位置对应的世界坐标 A_world

缩放完成后,根据当前屏幕下A所对应的世界坐标A1_world

计算A1_world 和 A_world 的偏移量

移动摄像机

代码:

cs 复制代码
private void ScaleBaseMousePos()
    {
        //缩放前鼠标位置对应的世界坐标 A点
        Vector3 aimPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.nearClipPlane));

        //缩放前屏幕位置存储
        Vector2 mousePos = Input.mousePosition;

        //缩放
        nowOriSize = Camera.main.orthographicSize - wheel * 50.0f;

        Camera.main.orthographicSize = Mathf.Clamp(nowOriSize, minOriSize, maxOriSize);

        //缩放后A点应该对应的屏幕坐标 A1点
        Vector3 newMousePos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, Camera.main.nearClipPlane));

        transform.position += (aimPos - newMousePos);
    }
相关推荐
小贺儿开发7 小时前
Unity3D 智慧城市管理平台
数据库·人工智能·unity·智慧城市·数据可视化
June bug1 天前
【领域知识】休闲游戏一次发版全流程:Google Play + Apple App Store
unity
星夜泊客1 天前
C# 基础:为什么类可以在静态方法中创建自己的实例?
开发语言·经验分享·笔记·unity·c#·游戏引擎
dzj20211 天前
PointerEnter、PointerExit、PointerDown、PointerUp——鼠标点击物体,则开始旋转,鼠标离开或者松开物体,则停止旋转
unity·pointerdown·pointerup
心前阳光1 天前
Unity 模拟父子关系
android·unity·游戏引擎
在路上看风景1 天前
26. Mipmap
unity
咸鱼永不翻身1 天前
Unity视频资源压缩详解
unity·游戏引擎·音视频
在路上看风景1 天前
4.2 OverDraw
unity
在路上看风景1 天前
1.10 CDN缓存
unity
ellis19702 天前
Unity插件SafeArea Helper适配异形屏详解
unity