Проблема с границами. Инкапсуляция после уменьшения модели - PullRequest
1 голос
/ 05 апреля 2019

У меня есть 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);
}

Масштабирование работает очень хорошо.Но уменьшение не работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...