IEnumerator ScaleIcon(RevealIcon icon, float duration, Vector3 scaleTarget, bool resetPos = false) { float timer = 0; Vector3 startScale = icon.rectT.localScale; while (timer < duration) { icon.rectT.localScale = Vector3.Lerp(startScale, scaleTarget, timer / duration); yield return(new WaitForFixedUpdate()); //Debug.Log(timer.ToString() + " " + icon.rectT.localScale.ToString()); timer += Time.deltaTime; } icon.rectT.localScale = scaleTarget; if (resetPos) { Vector2 lastPos = Vector2.zero; for (int i = 0; i < allIcons.Count; i++) { if (!allIcons[i].Equals(icon) && allIcons[i].rectT.anchoredPosition.x > lastPos.x) { lastPos = allIcons[i].rectT.anchoredPosition; } } lastPos.x += iconGap * 2; icon.rectT.anchoredPosition = lastPos; allIcons.Remove(icon); allIcons.Add(icon); } }
IEnumerator MoveIcon(bool direction, RevealIcon icon, float duration, float distance) { float timer = 0; int directionFactor = direction ? 1 : -1; Vector2 startPos = icon.rectT.anchoredPosition; Vector2 endPos = new Vector2(icon.rectT.anchoredPosition.x + (distance * directionFactor), icon.rectT.anchoredPosition.y); while (timer < duration) { icon.rectT.anchoredPosition = Vector2.Lerp(startPos, endPos, timer / duration); yield return(new WaitForFixedUpdate()); timer += Time.deltaTime; } icon.rectT.anchoredPosition = endPos; if (onGoingAnim) { onGoingAnim = false; } }
public void RemoveIcon(RevealIcon target, Type targetEntity) { activeIcons.Remove(targetEntity); if (revelationOn) { StartCoroutine(ScaleIcon(target, animationsDuration, Vector3.zero, true)); } for (int i = 0; i < allIcons.Count; i++) { if (!allIcons[i].Equals(target)) { if (allIcons[i].rectT.anchoredPosition.x > target.rectT.anchoredPosition.x) { StartCoroutine(MoveIcon(false, allIcons[i], animationsDuration, iconGap)); } else { StartCoroutine(MoveIcon(true, allIcons[i], animationsDuration, iconGap)); } } } }
public AnimInfos(AnimActionType _animType, Sprite _targetEntitySprite, RevealIcon _targetIcon) { animType = _animType; displaySprite = _targetEntitySprite; targetIcon = _targetIcon; }