private void Awake() { _spriteRenderer = GetComponent <SpriteRenderer>(); _hotSpot = new Vector2(_spriteRenderer.bounds.size.x, _spriteRenderer.bounds.size.y) / 2f; _initPos = transform.localPosition + Vector3.up * _hotSpot.y / 2f; _initColor = _spriteRenderer.color; _spriteRenderer.color = Colorizer.Alpha(_spriteRenderer.color, 0f); }
public void Hide(Action onComplete = null) { LeanTween.cancel(_moveTween); LeanTween.cancel(_colorTween); _colorTween = LeanTween.value(_spriteRenderer.color.a, 0f, Time / 8f) .setEase(LeanTweenType.easeInOutSine) .setOnUpdate(a => _spriteRenderer.color = Colorizer.Alpha(_spriteRenderer.color, a)) .setOnComplete(onComplete) .id; }
public void Show(Vector3 pos, Direction dir) { Hide(() => { transform.localPosition = _initPos + pos; var move = transform.localPosition + dir.Vector() * MoveDistance; _moveTween = LeanTween.moveLocal(gameObject, move, Time) .setDelay(Delay) .setEase(LeanTweenType.easeInOutSine) .setLoopCount(-1) .setOnCompleteOnStart(true) .setOnCompleteOnRepeat(true) .setOnComplete(() => { LeanTween.cancel(_colorTween); _colorTween = LeanTween.value(0f, _initColor.a, Time / 2f) .setDelay(Delay) .setEase(LeanTweenType.easeInOutSine) .setLoopPingPong(1) .setOnUpdate(a => _spriteRenderer.color = Colorizer.Alpha(_spriteRenderer.color, a)) .id; }) .id; }); }
public void Init(int horizontalLinesCount, int verticalLinesCount, float distanceBetweenLines, float animationSpeed = 1f, float delayScale = 1f) { if (verticalLinesCount > 1) { // Horizontal lines down Y axis for (var i = 0; i < horizontalLinesCount; i++) { var gridLine = _itemPool.GetGridLine(); _gridLinesHorizontal.Add(gridLine); var material = gridLine.GetComponent <Renderer>().material; material.color = Colorizer.Alpha(material.color, 0f); gridLine.transform.SetParent(transform); gridLine.name = "GridLineHorizontal " + i; gridLine.transform.localRotation = Quaternion.identity; gridLine.transform.localPosition = new Vector3( distanceBetweenLines * (verticalLinesCount - 1) / 2f, i * distanceBetweenLines, ZOffset ); var scale = transform.localScale; scale.Scale(new Vector3( distanceBetweenLines * (verticalLinesCount - 1) * _nodeWidth - _gridPointWidth, GridLineScale, GridLineScale )); gridLine.transform.localScale = scale; Appear(gridLine, animationSpeed, delayScale); gridLine.GetComponent <GridTransit>().WaveIn( i, horizontalLinesCount, Vector3.right, LeanTweenType.easeOutSine, animationSpeed, delayScale ); } } if (horizontalLinesCount > 1) { // Vertical lines across X axis for (var i = 0; i < verticalLinesCount; i++) { var gridLine = _itemPool.GetGridLine(); _gridLinesVertical.Add(gridLine); var material = gridLine.GetComponent <Renderer>().material; material.color = Colorizer.Alpha(material.color, 0f); gridLine.transform.SetParent(transform); gridLine.name = "GridLineVertical " + i; gridLine.transform.localRotation = Quaternion.identity; gridLine.transform.localPosition = new Vector3( i * distanceBetweenLines, distanceBetweenLines * (horizontalLinesCount - 1) / 2f, ZOffset ); var scale = transform.localScale; scale.Scale(new Vector3( GridLineScale, distanceBetweenLines * (horizontalLinesCount - 1) * _nodeWidth - _gridPointWidth, GridLineScale )); gridLine.transform.localScale = scale; Appear(gridLine, animationSpeed, delayScale); gridLine.GetComponent <GridTransit>().WaveIn( i, verticalLinesCount, Vector3.up, LeanTweenType.easeOutSine, animationSpeed, delayScale ); } } // Points at each cross section _gridPoints = new GameObject[horizontalLinesCount, verticalLinesCount]; for (var i = 0; i < horizontalLinesCount; i++) { for (var j = 0; j < verticalLinesCount; j++) { var gridPoint = Instantiate(GridPointPrefab); _gridPoints[i, j] = gridPoint; var material = gridPoint.GetComponent <Renderer>().material; material.color = Colorizer.Alpha(material.color, 0f); gridPoint.transform.SetParent(transform); gridPoint.name = "GridPoint (" + i + "," + j + ")"; gridPoint.transform.localRotation = Quaternion.identity; gridPoint.transform.localPosition = new Vector3( j * distanceBetweenLines, i * distanceBetweenLines, ZOffset ); gridPoint.transform.localScale = Vector3.one * GridPointScale; Appear(gridPoint, animationSpeed, delayScale); gridPoint.GetComponent <GridTransit>().WaveIn( i + j, horizontalLinesCount * verticalLinesCount, Vector3.down, LeanTweenType.easeOutBack, animationSpeed, delayScale ); } } }