Guest User

Untitled

a guest
Mar 1st, 2023
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using UnityEngine;
  2.  
  3. abstract class SmoothChanging<T>
  4. {
  5.     protected T from; // Стартовое значение любого типа
  6.     protected T to; // Финальное значение этого же типа
  7.     protected Lerp lerp; // Моя отдельная утилита, которая плавно меняет 0 до 1 за указанное время
  8.  
  9.     public SmoothChanging()
  10.     {
  11.         lerp = new Lerp();
  12.     }
  13.  
  14.     public void SetDuration(float duration)
  15.     {
  16.         // За какое время 0 поднимется до 1,
  17.         // а значит, за какое время from станет to.
  18.         lerp.SetDuration(duration);
  19.     }
  20.  
  21.     public void StartChange()
  22.     {
  23.         // 0 начинает увеличиваться при запуске этой функции
  24.         lerp.Play();
  25.     }
  26.  
  27.     public void StopChange()
  28.     {
  29.         // Можно делать паузу
  30.         lerp.Stop();
  31.     }
  32.  
  33.     public void SetFromAndTO(T from, T to)
  34.     {
  35.         // Любой тип, Vector2/3, float, и т.п.
  36.         this.from = from;
  37.         this.to = to;
  38.     }
  39.  
  40.     public abstract T GetValue();
  41. }
  42.  
  43. // Вот так все просто получается, внизу
  44. // float, Vector3, Vector2, но потом
  45. // можно добавить и другое, кватернионы, int-ы, и т.п.
  46.  
  47. class SmoothFloatChanging : SmoothChanging<float>
  48. {
  49.     public override float GetValue()
  50.     {
  51.         return Mathf.Lerp(from, to, lerp.GetLerp());
  52.     }
  53. }
  54.  
  55. class SmoothVector3Changing : SmoothChanging<Vector3>
  56. {
  57.     public override Vector3 GetValue()
  58.     {
  59.         return Vector3.Lerp(from, to, lerp.GetLerp());
  60.     }
  61. }
  62.  
  63. class SmoothVector2Changing : SmoothChanging<Vector2>
  64. {
  65.     public override Vector2 GetValue()
  66.     {
  67.         return Vector2.Lerp(from, to, lerp.GetLerp());
  68.     }
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment