Объявление
public static float InverseLerp(float a, float b, float value);Параметры
a | Начало диапазона. |
b | Конец диапазона. |
value | Точка в диапазоне, который вы хотите рассчитать. |
Возвращает
float Значение между нулем и единицей, представляющее, где параметр «значение» попадает в диапазон, определяемый a и b.
Описание
Определяет, где значение
находится между двумя точками.
Значения a и b определяют начало и конец линейного числового диапазона. Параметр «значение», который вы указываете, представляет собой значение, которое может лежать где-то в пределах этого диапазона. Этот метод вычисляет, где в указанном диапазоне находится параметр "значение".
Если параметр «значение» находится в пределах диапазона, InverseLerp возвращает значение от нуля до единицы, пропорциональное положению значения в пределах диапазона. Если параметр «значение» выходит за пределы диапазона, 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.