Files
Travel_Run/Assets/Scripts/Flow/FlowIntroFloatMotion.cs
2026-07-06 16:15:20 +09:00

59 lines
1.4 KiB
C#

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<RectTransform>();
if(rectTransform != null)
{
basePosition = rectTransform.anchoredPosition;
baseScale = rectTransform.localScale;
}
}
private void OnEnable()
{
if(rectTransform == null)
{
rectTransform = GetComponent<RectTransform>();
}
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;
}
}
}