版本: Unity 6 (6000.0)
语言English
  • C#

Mathf.InverseLerp

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个修改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public static float InverseLerp(float a, float b, float value);

参数

a 范围的起始值。
b 范围的结束值。
value 要计算的范围内的点。

返回值

float 一个介于零和一之间的值,表示“value”参数在由 a 和 b 定义的范围内所处的位置。

描述

确定 value 在两点之间的位置。

a 和 b 值定义线性数值范围的起始和结束。您提供的“value”参数表示可能位于该范围内的某个值。此方法计算“value”参数在指定范围内所处的位置。
如果“value”参数在范围内,则 InverseLerp 返回一个介于零和一之间的值,该值与该值在范围内的位置成正比。如果“value”参数超出范围,则 InverseLerp 返回零或一,具体取决于它是在范围开始之前还是范围结束之后。

using UnityEngine;

public class ExampleClass : MonoBehaviour { public float start = 20.0f; public float end = 40.0f; public float currentProgress = 22.0f;

void Start() { // the progress between start and end is stored as a 0-1 value, in 'i' float i = Mathf.InverseLerp(start, end, currentProgress);

// this will display "Current progress: 0.1 or 10%" in Console window Debug.Log("Current progress: " + i + " or " + i * 100 + "%");

// the needle of an on-screen dial could then be set to a // rotational angle out of 360 degrees, based on the progress. float dialNeedleAngle = i * 360;

//// this will display "Needle angle: 36" in Console window Debug.Log("Needle angle: " + dialNeedleAngle); } }

其他资源:Lerp