Unity 图片动态按照比例缩放

    /// <summary>
    /// 缩放图片
    /// </summary>
    /// <param name="image"></param>
    /// <param name="destHeight"></param>
    /// <param name="destWidth"></param>
    public static void ZoomImage(this Image image, float destHeight, float destWidth)
    {
        image.SetNativeSize();//先将图片还原到原大小


        float width = 0, height = 0;
        //按比例缩放
        var sizeDelta = image.GetComponent<RectTransform>().sizeDelta;
        float sourWidth = sizeDelta.x;
        float sourHeight = sizeDelta.y;

        if (sourHeight > destHeight || sourWidth > destWidth)
        {

            if ((sourWidth * destHeight) > (sourHeight * destWidth))
            {
                width = destWidth;
                height = (destWidth * sourHeight) / sourWidth;
            }
            else
            {
                height = destHeight;
                width = (sourWidth * destHeight) / sourHeight;
            }

        }
        else
        {
            width = sourWidth;
            height = sourHeight;
        }

        image.GetComponent<RectTransform>().sizeDelta = new Vector2(width, height);
    }

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity中实现图片以鼠标中心的方法如下: 1.首先需要实现获取鼠标位置的函数,通过Input.mousePosition可以获取鼠标位置。 2.在图片上添加脚本,通过鼠标滚轮的输入来实现图片。 3.在的函数中,计算出当前鼠标位置与图片中心点的距离,通过该距离来计算图片比例。 4.将图片比例应用到的函数中,同时也要将图片的中心点设置为鼠标当前的位置。 5.最后,在Update()函数中不断更新图片的位置和比例即可实现图片以鼠标中心的功能。 总的来说,需要计算出鼠标与图片中心的距离来确定比例,同时通过设置图片的中心点为鼠标当前位置来保持效果。 ### 回答2: Unity中实现图片以鼠标中心可以按照以下步骤进行: 1. 获取鼠标在屏幕上的位置,可以使用Unity自带的Input.mousePosition函数。 2. 将鼠标位置从屏幕坐标系转换到世界坐标系,可以使用Camera.ScreenToWorldPoint函数。 3. 计算图片中心点到鼠标位置的距离,可以用相减的方法得到。 4. 根据鼠标滚轮的值,计算需要比例。 5. 使用Transform的localScale属性对图片进行,同时调整图片的位置,使图片后中心点仍然位于鼠标位置。 这样就可以实现图片以鼠标中心的效果了。需要注意的是,在计算距离和比例时,需要考虑到图片的旋转和状态,否则会出现不准确的情况。此外,如果需要在有多个相机的场景中进行,还需要考虑相机的位置和角度对效果的影响。 ### 回答3: Unity中可以通过捕捉鼠标坐标来实现以鼠标中心图片的功能。首先需要获取鼠标在屏幕中的位置坐标,从而将其转化为世界坐标。然后在鼠标位置附近创建一个空物体,将其作为的中心点。在图片需要的时候,将其父对象设置为空物体,然后空物体即可实现以鼠标中心。 具体实现可以通过以下步骤: 1. 在Unity中创建一个空物体,并将其命名为“Center”。 2. 在代码中捕捉鼠标位置坐标。 ```C# Vector3 mousePos = Input.mousePosition; ``` 3. 将鼠标位置转化为世界坐标。 ```C# mousePos = Camera.main.ScreenToWorldPoint(mousePos); ``` 4. 将Center物体的位置设置为鼠标位置,从而将其作为中心点。 ```C# Center.transform.position = mousePos; ``` 5. 在需要图片的脚本中,将其父对象设置为Center物体,并在方法中调用操作。 ```C# transform.parent = Center.transform; transform.localScale = new Vector3(scaleX, scaleY, 1); ``` 通过以上步骤,便可以在鼠标中心图片,并且保持图片的位置不变。这样,在制作2D游戏时,可以为玩家提供更好的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值