unity游戏中测量结果归一化处理

本文讨论了如何在Unity的UGUI环境中,通过计算鼠标从A点的偏移值并使用归一化公式将其映射到两点A、B之间的距离范围内,实现测量效果,如拉线测量。作者提供了归一化函数的代码示例和调用方法。
摘要由CSDN通过智能技术生成

需求分析

在UGUI下,提前知道两点(设为A、B)之间的距离,以及他们的屏幕坐标。

现在想要实现,鼠标从A点出发移动的偏移值映射到两点之间距离的区间中(即将鼠标相对A点的偏移数据处理到AB距离的范围内,以达到模拟真实测量的效果。
(例如:让玩家点击A点后出现,从A点延申到鼠标上有一条线,通过拉线来实现测量的效果。)

时间有点紧迫,也没有细想这样实现的可用性啥的。真诚希望有大佬指教!

归一化公式

使用的公式出处:将数据归一化到任意区间范围的方法_数据 处理到 指定范围内-CSDN博客

代码实现

归一化函数:

/// <summary>
/// 将测量结果归一化
/// </summary>
/// <param name="min">样本数据的最小值</param>
/// <param name="max">样本数据的最大值</param>
/// <param name="left">区间的左边界</param>
/// <param name="right">区间的有边界</param>
/// <param name="value">需要归一化的测量结果</param>
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);
}

调用举例:

//将鼠标的坐标转为屏幕坐标系的坐标
RectTransformUtility.ScreenPointToLocalPointInRectangle( UI的画布RectTransform, 鼠标自己坐标系下的当前坐标, null, out 接收鼠标在屏幕坐标系下的坐标的变量);
​
//归一化后的结果
ans = MeasureNormalization( 0, AB点屏幕坐标下的距离, 0, AB点认为规定要测量出来的距离, 鼠标在屏幕坐标系下的坐标);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值