您当前的位置: 首页 > 

染指流年灬

暂无认证

  • 2浏览

    0关注

    194博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

RectTransform 的 scale对计算鼠标的影响

染指流年灬 发布时间:2019-02-01 11:06:00 ,浏览量:2

根据鼠标位置改变图中取色版的位置 最近项目有需求要在游戏里面弄出取色版 然后参考了某位大神的博客直接导入插件

https://blog.csdn.net/qq_29579137/article/details/72834457 然后在UGUI下面发现取色位置和鼠标位置不太对

private Vector3 mousPosition( )
        {
			return (Input.mousePosition - m_transform.position) / Root.rootScaleX ;
		}

最后在更改取色点位置的代码上面更改了一下,如上所示 这里要注意Root.rootScaleX 是UI根节点的recttransform的尺寸 在这里插入图片描述 rootScaleX要在start的时候获取,在Awake获取的时候还是1,这个scale是根据根节点的Canvas Scaler的不同配置来调节的,可以自己调试下看看

rootScaleX = GetComponent().localScale.x;

最后再解释下Input.mousePosition - m_transform.position这句的含义 如果基础不是很好的同学可能不是很清楚 这句是因为坐标系不同导致的,看下图 在这里插入图片描述

private Vector3 mousPosition( )
        {
			return (Input.mousePosition - m_transform.position) / Root.rootScaleX ;
		}

Input.mousePosition是根据图中黄色箭头所指的地方作为原点的 蓝色的是坐标是上面函数的返回。 m_transform.position表示下图中的这段距离 在这里插入图片描述 这样减去的原因是 假如我鼠标刚好点击到上图坐标系的原点 那么此时减去之后的值是Vector3.zero了 这样就是将坐标系从屏幕左下角变成上图的坐标系了 最后除以Root.rootScaleX 的原因是 原来的减法是基于UI整体尺寸为1的时候 如果这个插件导进来创建了调色板的时候 你的UIRoot的尺寸和插件场景里的不同 就需要考虑一下这个因素了 这个尺寸会调节UIRoot下面的所以图片的缩放,如下图所示 在这里插入图片描述

关注
打赏
1665909078
查看更多评论
立即登录/注册

微信扫码登录

0.0362s