需求分析
在UGUI下,提前知道两点(设为A、B)之间的距离,以及他们的屏幕坐标。
现在想要实现,鼠标从A点出发移动的偏移值映射到两点之间距离的区间中(即将鼠标相对A点的偏移数据处理到AB距离的范围内,以达到模拟真实测量的效果。
(例如:让玩家点击A点后出现,从A点延申到鼠标上有一条线,通过拉线来实现测量的效果。)
时间有点紧迫,也没有细想这样实现的可用性啥的。真诚希望有大佬指教!
归一化公式
使用的公式出处:将数据归一化到任意区间范围的方法_数据 处理到 指定范围内-CSDN博客
代码实现
归一化函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
public float MeasureNormalization(float min,float max,float left,float right,float value) { float temp; if (min>max) { temp = min; min = max; max = temp; } if (left>right) { temp = left; left = right; right = temp; }
return left + (right - left) / (max - min) * (value - min); }
|
调用举例:
1 2 3 4 5
| RectTransformUtility.ScreenPointToLocalPointInRectangle( UI的画布RectTransform, 鼠标自己坐标系下的当前坐标, null, out 接收鼠标在屏幕坐标系下的坐标的变量);
ans = MeasureNormalization( 0, AB点屏幕坐标下的距离, 0, AB点认为规定要测量出来的距离, 鼠标在屏幕坐标系下的坐标);
|