public static GameObject DrawSpriteTimedAlpha(Vector3 position, Sprite sprite, float scale, float timer, float startDecayTimeNormalized = .8f) { GameObject gameObject = DrawSpriteTimed(position, sprite, scale, timer); SpriteRenderer spriteRenderer = gameObject.GetComponent <SpriteRenderer>(); float startAlphaDecayTime = timer * startDecayTimeNormalized; float totalAlphaDecayTime = timer - startAlphaDecayTime; float currentTime = 0f; FunctionUpdater.Create(() => { if (gameObject == null) { return(true); } currentTime += Time.unscaledDeltaTime; if (currentTime >= startAlphaDecayTime) { spriteRenderer.color = new Color(1, 1, 1, Mathf.Lerp(1f, 0f, 1 - ((timer - currentTime) / totalAlphaDecayTime))); } return(false); }); return(gameObject); }
// Text Updater always following mouse public static void MouseTextUpdater(Func <string> GetTextFunc, Vector3 positionOffset = default(Vector3)) { GameObject gameObject = new GameObject(); FunctionUpdater.Create(() => { gameObject.transform.position = UtilsClass.GetMouseWorldPosition() + positionOffset; return(false); }); TextUpdater(GetTextFunc, Vector3.zero, gameObject.transform); }
// Debug DrawLine to draw a projectile, turn Gizmos On public static void DebugProjectile(Vector3 from, Vector3 to, float speed, float projectileSize) { Vector3 dir = (to - from).normalized; Vector3 pos = from; FunctionUpdater.Create(() => { Debug.DrawLine(pos, pos + dir * projectileSize); float distanceBefore = Vector3.Distance(pos, to); pos += dir * speed * Time.deltaTime; float distanceAfter = Vector3.Distance(pos, to); if (distanceBefore < distanceAfter) { return(true); } return(false); }); }
public static void SpritePopup(Vector3 position, Sprite sprite, float scale) { float popupTime = 1f; GameObject gameObject = DrawSpriteTimedAlpha(position, sprite, scale, popupTime); Vector3 finalPopupPosition = position + new Vector3(0, 1, 0) * 20f; Transform transform = gameObject.transform; Vector3 moveAmount = (finalPopupPosition - position) / popupTime; FunctionUpdater.Create(delegate() { if (gameObject == null) { return(true); } transform.position += moveAmount * Time.unscaledDeltaTime; return(false); }, "SpritePopup"); }