我确实相信您想将值从一个范围(加速度计)缩放到另一个 0 - 100。如果是这种情况,那么最好不要使用钳位功能。您可以使用地图功能来做到这一点:
float mapValue(float mainValue, float inValueMin, float inValueMax, float outValueMin, float outValueMax)
{
return (mainValue - inValueMin) * (outValueMax - outValueMin) / (inValueMax - inValueMin) + outValueMin;
}
Input.acceleration.y
将加速度计值 ( ) 作为主要值传递。该inValueMin
值应该是您喜欢的最小加速度计值。该inValueMax
值应该是您喜欢的最大加速度计值。这完全由您决定。
outValueMin
和outValueMax
值是输出的范围。在你的情况下,那是0
and 100
。
像下面这样的东西应该让你开始:
//Scale Min and max
public float scaleMin = 0;
public float scaleMax = 100f;
//Accelerometer min/max. Find this with Debug.Log(Input.acceleration.y);
public float accelYMin = -10;
public float accelYMax = 10;
void Update()
{
float accelY = Input.acceleration.y;
float scaledVal = mapValue(accelY, accelYMin, accelYMax, scaleMin, scaleMax);
transform.localScale = new Vector3(0, scaledVal, 0);
}
float mapValue(float mainValue, float inValueMin, float inValueMax, float outValueMin, float outValueMax)
{
return (mainValue - inValueMin) * (outValueMax - outValueMin) / (inValueMax - inValueMin) + outValueMin;
}