2016-10-29 6 views
0

Я делаю игру для Android, используя Unity 5.4.0f3, и у меня возникают проблемы с исчезновением значения color.a спрайта. Я пробовал анимацию, но они, похоже, не работают для меня. Я пробовал использовать код от here и here, но они тоже не работали. Я хочу, чтобы спрайт исчез в течение примерно 1 секунды, когда он прослушивается. Я думаю, мне нужно использовать петлю for и Mathf.Lerp. Пожалуйста помоги.Угасающие альфа-ценности в единстве?

Редактировать: Вот изображение представления инспектора объекта, который я хочу погасить.

enter image description here

+0

Показать нам скриншот с материалом, прикрепленным к объекту, особенно его шейдерным типом. –

+0

Добавлено изображение к вопросу – Raid

ответ

0

Поскольку Sprite-Default материал НЕ изменяемый.

Попробуйте вместо этого:

Самый простой способ:

/* Modify SpriteRenderer.color instead of Material.color */ 
//Get the renderer via GetComponent or have it cached previously 
var renderer = GetComponent<SpriteRenderer>(); 
renderer.color = new Color(0f, 0f, 0f, 0f); // Do your lerping stuff with this property 

Если вы все еще хотите изменить Материал

  1. Создайте новый материал в закладке Project и назовите его, что бы вы ни делали . Project tab ->Create ->Material.

    enter image description here

  2. Назначают его шейдера, как показано ниже.

    enter image description here

  3. Присвоить вновь созданный material вашему Sprite видеообработки Material слот. Обратите внимание, что теперь вы можете изменить цвет материала с инспектором. Он больше не был помечен серым цветом. Вы должны снова запустить код, и он должен работать.

    enter image description here

+0

Изменение цвета работал. Спасибо! – Raid

0

Конечно изменение sprRender.color, не color.a. Простой код для вас, Fadeout работал. Добавьте свой продвинутый.

using UnityEngine; 
using System.Collections; 

[RequireComponent(typeof(SpriteRenderer))] 

public class FadeOut : MonoBehaviour { 
    SpriteRenderer sprRender; 

    void Start() 
    { 
     sprRender = GetComponent<SpriteRenderer>(); 
    } 

    void Update() 
    { 
     sprRender.color -= new Color(0, 0, 0, Time.deltaTime); 
    } 
}