public void Init(float dissapearTimer, float startingAlpha, Sprite sprite, int sortingId, int sortingOrder, Transform referencedTransform, Vector3 offset, Color desiredColor) { _startingAlpha = startingAlpha; /* Color color = SpriteRenderer.color; * color.a = _startingAlpha; * SpriteRenderer.color = color;*/ _desiredColor = desiredColor; _desiredColor.a = _startingAlpha; GhostMaterial.SetColor("_Color", _desiredColor); SpriteRenderer.color = desiredColor; _dissapearTimer = dissapearTimer; SpriteRenderer.sortingLayerID = sortingId; SpriteRenderer.sortingOrder = sortingOrder; _sprite = sprite; Debug.Log(sprite); SpriteRenderer.sprite = sprite; _offset = offset; _originalPosition = referencedTransform.position; transform.position = _originalPosition; _originalScaling = referencedTransform.localScale; transform.localScale = _originalScaling; _hasBeenInitiated = true; gameObject.SetActive(true); _useTint = true; _startDissapearing = StartDissapearing(_useTint); StartCoroutine(_startDissapearing); }
/// <summary> /// From the class field, dissapear timer, slowly disspear the sprite renderer . Pass in a bool to use the provided ghost shader which /// behaves /// </summary> /// <returns></returns> private IEnumerator StartDissapearing(bool changeColor) { bool finishedLerping = false; float startLerpTime = Time.time; Color color = SpriteRenderer.color; Color blackWithZeroAlpha = Color.black; Color startColor = GhostMaterial.color; blackWithZeroAlpha.a = 0; if (!changeColor) { GhostMaterial.shader = Shader.Find("Sprites/Default"); } else { GhostMaterial.shader = Shader.Find("Spine/SkeletonGhost"); GhostMaterial.SetFloat("_TextureFade", 0.25f); } while (!finishedLerping) { float timeSinceLerpStart = Time.time - startLerpTime; float percentComplete = timeSinceLerpStart / _dissapearTimer; if (percentComplete >= 1) { finishedLerping = true; if (!changeColor) { color.a = 0; GhostMaterial.color = color; } else { GhostMaterial.SetColor("_Color", blackWithZeroAlpha); } } if (!changeColor) { float newAlphaValue = Mathf.Lerp(_startingAlpha, 0, percentComplete); color.a = newAlphaValue; GhostMaterial.color = color; } else { Color newColor = Color.Lerp(startColor, blackWithZeroAlpha, percentComplete); GhostMaterial.SetColor("_Color", newColor); } yield return(null); } _canBeReused = true; gameObject.SetActive(false); _hasBeenInitiated = false; }