MiniGame-PushPush/Assets/Epic Toon FX/Demo/Scripts/ETFXSpriteBouncer.cs
2023-10-04 20:20:04 +09:00

38 lines
1.4 KiB
C#

using UnityEngine;
namespace EpicToonFX
{
public class ETFXSpriteBouncer : MonoBehaviour
{
public float scaleAmount = 1.1f; // How much the sprite should scale up vertically
public float scaleDuration = 1f; // How long it takes to complete a full scale cycle
private Vector3 startScale; // Original scale of the sprite
private float scaleTimer = 0f; // Timer for scaling animation
private void Start()
{
startScale = transform.localScale; // Store the original scale of the sprite
// If the sprite is already scaled, adjust the startScale accordingly
if (startScale.y != 1f)
{
float adjustedScale = startScale.y / scaleAmount;
startScale = new Vector3(startScale.x, adjustedScale, startScale.z);
}
}
private void Update()
{
scaleTimer += Time.deltaTime; // Update the timer
float t = Mathf.Clamp01(scaleTimer / scaleDuration); // Calculate the interpolation factor with a clamp
float verticalScale = Mathf.Lerp(startScale.y, startScale.y * scaleAmount, t) + Mathf.PingPong(scaleTimer / scaleDuration, 0.1f);; // Interpolate the vertical scale
Vector3 newScale = new Vector3(startScale.x, verticalScale, startScale.z); // Calculate the new scale
transform.localScale = newScale; // Update the scale of the sprite
}
}
}