开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   一骑红尘为妃子

实现相册一样的点击时从点击的地方放大缩小

个人分类: Unity--UGUI | 2017-4-20 16:51
实现的原理很简单,主要是通过更改锚点来实现放大时凝视的位置不改变。

[code]csharpcode:

void Update () {
	if(Input.GetMouseButton(0)) {
        SetPivot();
        this.transform.localScale *= 1.01f;
    }
	else if(Input.GetMouseButton(1)) {
        this.transform.localScale *= 0.99f;
        SetPivot();
    }
}

private void SetPivot() {
    Vector2 size = transform.GetComponent<RectTransform>().sizeDelta* transform.localScale.x;
    Vector2 pivot = transform.GetComponent<RectTransform>().pivot;
    float left = transform.localPosition.x - size.x * pivot.x;
    float bottom = transform.localPosition.y - size.y * pivot.y;

    Vector2 mouseposition = Camera.main.ScreenToWorldPoint( Input.mousePosition ) * 100;
    transform.GetComponent<RectTransform>().pivot = new Vector2( (mouseposition.x - left) / size.x, (mouseposition.y - bottom) / size.y );
    transform.localPosition = mouseposition; 
}
以上代码适用于2D摄像机下,图片位置原来在0,0点的情况
效果如下:

左键点击右边的耳朵之后

再右键左边的眼界

可以看见,你鼠标所在的点的位置在缩放过程中一直是不变的

0 0

作者的其他最新博客

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

标签

阅读排行

评论排行

推荐博客

最新博客

返回顶部