我想在滑块更改期间更改ARCore对象的比例。以下是有关滑块更改以及如何更改比例的回调代码。
public void onScaleSlidereChange(Slider slider)
{
if (didStartChangingScale == false)
{
OnStartScaleManipulation();
}
OnContinueScaleManipulation();
m_IsScaling = false;
}
OnStartScaleManipulation
是我存储当前比例的地方。之后,我按如下所示缩放对象,
protected void OnStartScaleManipulation()
{
m_IsScaling = true;
m_CurrentScaleRatio = (ManipulationSystem.Instance.SelectedObject.transform.localScale.x - MinScale) / ScaleDelta;
}
protected void OnContinueScaleManipulation()
{
m_CurrentScaleRatio +=
k_Sensitivity * GestureTouchesUtility.PixelsToInches(1.0f);
float currentScale = CurrentScale;
ManipulationSystem.Instance.SelectedObject.transform.localScale = new Vector3(currentScale,currentScale,currentScale);
}
不幸的是,ARObject从未缩放过。我错过了什么吗?
更新:
以下是CurrentScale
private float CurrentScale
{
get
{
float elasticScaleRatio = ClampedScaleRatio + ElasticDelta();
float elasticScale = MinScale + (elasticScaleRatio * ScaleDelta);
return elasticScale;
}
}
private float ElasticDelta()
{
float overRatio = 0.0f;
if (m_CurrentScaleRatio > 1.0f)
{
overRatio = m_CurrentScaleRatio - 1.0f;
}
else if (m_CurrentScaleRatio < 0.0f)
{
overRatio = m_CurrentScaleRatio;
}
else
{
return 0.0f;
}
return (1.0f - (1.0f / ((Mathf.Abs(overRatio) * k_Elasticity) + 1.0f)))
* Mathf.Sign(overRatio);
}