Плавное исчезновение объекта

Программирование на Юнити.

Плавное исчезновение объекта

Сообщение MrDmitry 07 июн 2023, 13:01

Делал плавное исчезновение объекта со сцены, с последующим его уничтожением и столкнулся с такой проблемой, после уничтожения объекта, от него остается тень на террейне, хотя перед эти тень так же становится прозрачной

[
Синтаксис:
Используется csharp
SerializeField]
    [Header("Скорость исчезновения ")]
    [Range(0,1)]
    private float SpeedTrans = 0.35f;
    Color _color;
    Renderer rend;
    bool ActiveClick = false;
    float CurTrans = 0;

    private void OnMouseDown()
    {
        rend = gameObject.GetComponent<Renderer>();
        _color = rend.material.color;
        ActiveClick = true;
    }

    private void Update()
    {
        if(ActiveClick)
        {
            if (_color.a > 0)
            {
                CurTrans = Mathf.Lerp(0, 1, SpeedTrans * Time.deltaTime);
                _color.a -= CurTrans;
                rend.material.color = _color;
            }
            if (_color.a == 0)
            {
                Destroy(gameObject);
            }
        }
    }
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Плавное исчезновение объекта

Сообщение Alkos26Rus 07 июн 2023, 14:35

дебаг поставь при уничтожении, я думаю он вобще не удаляется
Синтаксис:
Используется csharp
           if (_color.a == 0)
            {
                Destroy(gameObject);
                Debug.Log("Destroy");
            }
 
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Плавное исчезновение объекта

Сообщение MrDmitry 07 июн 2023, 19:06

Объект уничтожался я проверял. В итоге решил проблему выставив на материале объекта Rendering mode на transpаrent.
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Плавное исчезновение объекта

Сообщение Alkos26Rus 07 июн 2023, 20:36

MrDmitry писал(а):Объект уничтожался я проверял.

Точно? Не обманываешь?

Синтаксис:
Используется csharp
_color.a -= CurTrans;

как у тебя может _color.a может быть равна нулю, если ты постоянно отнимаешь флоат? Он скорее тупо проскакивает через ноль и уничтожение никогда не срабатывает. Ну костылем каким то решил вопрос, молодец, но объект не удаляется.

Лучше вместо if (_color.a == 0) сделай if (_color.a <= 0)
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Плавное исчезновение объекта

Сообщение MrDmitry 08 июн 2023, 18:49

Синтаксис:
Используется csharp
 if (_color.a == 0) сделай if (_color.a <= 0)

Сделал сразу после того как написал пост. Тень не исчезала. Помогло то что я написал выше.
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9