Лучше задачу опишите, а не ваш личный способ ее решения.
Мэппинг значений можно сделать, например, так:
Используется csharp
#region REMAP /////////////////////////////////////////////////////////////////////////////////////////////
public float RemapFrom01(float value, float toMin, float toMax)
{
return Remap(Mathf.Clamp01(value), 0f, 1f, toMin, toMax);
}
public float RemapTo01(float value, float fromMin, float fromMax)
{
return Mathf.Clamp01((value - fromMin) / (fromMax - fromMin));
}
public static float Remap(float value, float fromMin, float fromMax, float toMin, float toMax)
{
return toMin + (value - fromMin) * (toMax - toMin) / (fromMax - fromMin);
}
#endregion
Если же ваша задача - избавиться от артефакта поворота при переходе через зенит, приводите вращение ко кватерниону, считайте дельту поворота, а не "новый градус".
То бишь, зведите кватернион дельты, например
Quaternion.Euler(0, delta * direction * Time.deltaTime, 0), и множьте на него тукущую ротацию. Это вылечит перескок или смену направления при повороте.