Плавное исчезновение спрайта.

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

Плавное исчезновение спрайта.

Сообщение D_Freezer 20 апр 2017, 12:49

Есть спрайт, мне нужно чтобы при попадании на триггер он плавно пропадал. При выходе из триггера так же плавно появлялся. Данный код работает, но почему-то с задержкой. То есть вхожу в триггер, несколько секунд ничего не происходит. Выхожу, так же.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class door : MonoBehaviour {
    public SpriteRenderer house; // спрайт
    public float changeSpeed = 1.0f; // скорость изменения
    private Color color; // переменная для цвета
    private bool isExit = true; // переменная проверки на присутствие игрока в триггере
        // Use this for initialization
        void Start () {
        color = house.color; // сохраняем текущий цвет
        }
       
        // Update is called once per frame
        void Update () {
        if (!isExit) // если в триггере
        {
            color.a -= Time.deltaTime; // уменьшаем альфа-канал спрайта
            house.color = color; // инициализируем новым цветом спрайт
        }
        else if (isExit) // если не в триггере
        {
            color.a += Time.deltaTime; // увеличиваем альфа-канал
            house.color = color; // инициализируем цвет спрайта
        }
        }

    void OnTriggerStay2D(Collider2D obj)
    {
        if (obj.tag == "Player")
        {
            isExit = false;
        }
    }

    void OnTriggerExit2D(Collider2D obj)
    {
        if (obj.tag == "Player")
        {
            isExit = true;
        }
    }
}
 
D_Freezer
UNец
 
Сообщения: 5
Зарегистрирован: 20 апр 2017, 12:39

Re: Плавное исчезновение спрайта.

Сообщение samana 20 апр 2017, 15:37

Добавьте в конце Update Debug.Log(house.color.a) чтобы убедится в том, что всё работает так, как ожидалось. Вдруг не всё так просто. :-ss
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Плавное исчезновение спрайта.

Сообщение D_Freezer 20 апр 2017, 20:01

И правда! Альфа-канал почему-то 1.0 в начале, а не 255...
D_Freezer
UNец
 
Сообщения: 5
Зарегистрирован: 20 апр 2017, 12:39

Re: Плавное исчезновение спрайта.

Сообщение D_Freezer 20 апр 2017, 21:34

В общем, может кому пригодится... Решил это добавлением функции color.a = Mathf.Clamp(color.a, 0, 1);, ограничивающая полученое значение в данном диапазоне.
D_Freezer
UNец
 
Сообщения: 5
Зарегистрирован: 20 апр 2017, 12:39

Re: Плавное исчезновение спрайта.

Сообщение siriusspark 22 апр 2017, 23:38

Альфа-канал "почему-то" 1.0 потому что в color цвета кодируются от 0 до 1. Используйте Color32, если хотите применять привычное кодирование rgb.
Star Wars: Path of lust. 3D-адвенчур 18+ по мотивам Звездных войн | _www.patreon.com/starlordgames
Аватара пользователя
siriusspark
UNIт
 
Сообщения: 106
Зарегистрирован: 10 сен 2015, 09:14

Re: Плавное исчезновение спрайта.

Сообщение Kabanelloo 23 апр 2017, 04:34

color.a = Mathf.Clamp(color.a, 0, 1) верно , ибо в коде просто пока отнимется, потом пока добавиться и есть эти секунды.
Kabanelloo
UNITрон
 
Сообщения: 163
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea


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

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

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