Unity中如何实现像百度地图那样,以鼠标点为中心进行缩放

M丶随心忄 2018-08-08 05:20:52
我想要的效果:比如说,场景中有一个平面,上面有图片(不是ui里的图片),然后我摄像机看着它,然后以鼠标当前所在位置 进行放大/缩小的效果;就像百度地图那样

我这两天试了的:1、获取鼠标位置,然后摄像机LookAt它,然而并没有用;
2、鼠标位置转世界坐标,然后摄像机看向它,然而鼠标位置一直是处于运行时的初始位置;
3、在鼠标位置生成一个空物体,摄像机看向它,然而还是没法,还是会有瞬移的那种情况;
4、之前在网上看到一个只能是适用Ui图片的放大缩小,也不适用于我想要的效果;

ps:然后我发现unity引擎好像也没有这个功能,一开始用5.x版本,然后用2018版本也是没有;不知道到底能不能做出来;
代码就不粘贴了。太渣了;

希望大佬能给个C#代码
...全文
2544 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
想问问 老哥最后实现这个功能了吗?
思任 2019-05-29
  • 打赏
  • 举报
回复

void Update()
{

float delX = Input.mousePosition.x - transform.position.x;
float delY = Input.mousePosition.y - transform.position.y;

float scaleX = delX / GetComponent<RectTransform>().rect.width / transform.localScale.x;
float scaleY = delY / GetComponent<RectTransform>().rect.height / transform.localScale.y;

if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
transform.localScale += Vector3.one * 0.1f;
}
else if (Input.GetAxis("Mouse ScrollWheel") < 0)
{
transform.localScale += Vector3.one * -0.1f;
}

GetComponent<RectTransform>().pivot += new Vector2(scaleX, scaleY);
transform.position += new Vector3(delX, delY, 0);
}
614563449 2018-11-15
  • 打赏
  • 举报
回复

public void Enlarge(float mouseX, float mouseY, float deltaSize)
{
// 获取鼠标放置位置
var mousePos = Camera.GetComponent<Camera>().ScreenToWorldPoint( new Vector3(mouseX, mouseY, 0) );

float size = Camera.GetComponent<Camera>().orthographicSize;

// 放大比例
float ratio = deltaSize / size;

Camera.transform.position -= ratio * (Camera.transform.position - mousePos);
Camera.GetComponent<Camera>().orthographicSize = size - deltaSize;
}
M丶随心忄 2018-08-10
  • 打赏
  • 举报
回复
这就凉了吗...

2,535

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧