У меня есть 3 ползунка, которые показывают bounds.encapsulated значения осей X, Y, Z.Вы можете уменьшить или уменьшить масштаб модели и пропорционально локальному масштабу Unity 3D 1 для игрового объекта.
Примечание : GetScale()
метод получает bounds.size и показывает слайдеру.
Примечание: метод SetScale()
вызывается при каждом изменении значения ползунка и сохраняет игровой объект localScale.
public Vector3 GetScale()
{
combineBounds = _obj.transform.GetComponent<Renderer>().bounds;
Renderer[] renderers = _obj.transform.GetComponentsInChildren<Renderer>();
foreach (Renderer render in renderers)
{
combineBounds.Encapsulate(render.bounds);
}
Debug.Log(combineBounds.size.x);
return combineBounds.size;
}
public void SetScale()
{
float xAxis = 0.0f;
float yAxis = 0.0f;
float zAxis = 0.0f;
if (sca.x != combineBounds.size.x )
{
xAxis = 1 - (sca.x / combineBounds.size.x);
xAxis *= -1;
}
if (sca.y != combineBounds.size.y)
{
zAxis = 1 - (sca.y / combineBounds.size.y);
zAxis *= -1;
}
if (sca.z != combineBounds.size.z)
{
yAxis = 1 - (sca.z / combineBounds.size.z);
yAxis *= -1;
}
_obj.transform.localScale = new Vector3(_obj.transform.localScale.x + xAxis,
_obj.transform.localScale.y + zAxis,
_obj.transform.localScale.z + yAxis);
}
Масштабирование работает очень хорошо.Но уменьшение не работает хорошо.