59 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|