using UnityEngine; public class FlowIntroFloatMotion : MonoBehaviour { public Vector2 amplitude = Vector2.zero; public Vector2 frequency = Vector2.one; public float phase = 0f; public float scalePulse = 0f; private RectTransform rectTransform; private Vector2 basePosition; private Vector3 baseScale; private void Awake() { rectTransform = GetComponent(); if(rectTransform != null) { basePosition = rectTransform.anchoredPosition; baseScale = rectTransform.localScale; } } private void OnEnable() { if(rectTransform == null) { rectTransform = GetComponent(); } if(rectTransform != null) { basePosition = rectTransform.anchoredPosition; baseScale = rectTransform.localScale; } } private void Update() { if(rectTransform == null) { return; } float time = Time.unscaledTime + phase; Vector2 offset = new Vector2( Mathf.Sin(time * frequency.x) * amplitude.x, Mathf.Sin(time * frequency.y) * amplitude.y); rectTransform.anchoredPosition = basePosition + offset; if(scalePulse > 0f) { float scale = 1f + (Mathf.Sin(time * 5.2f) * scalePulse); rectTransform.localScale = baseScale * scale; } } }