You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.0 KiB
44 lines
1.0 KiB
using UnityEngine;
|
|
|
|
public class SpritesAnimation : MonoBehaviour
|
|
{
|
|
[SerializeField] Sprite[] sprites;
|
|
[SerializeField] SpriteRenderer spriteRenderer;
|
|
|
|
[SerializeField] float frame;
|
|
[SerializeField] bool loop;
|
|
|
|
int currentImgIdx;
|
|
float prevTime;
|
|
|
|
private void Awake()
|
|
{
|
|
if(spriteRenderer == null)
|
|
spriteRenderer = GetComponent<SpriteRenderer>();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (sprites.Length == 0) return;
|
|
|
|
float delta = Time.time - prevTime;
|
|
float interval = frame / sprites.Length;
|
|
|
|
if (delta >= interval)
|
|
{
|
|
prevTime = Time.time;
|
|
if(loop)
|
|
currentImgIdx = (currentImgIdx + 1) % sprites.Length;
|
|
else
|
|
currentImgIdx = Mathf.Min(currentImgIdx + 1, sprites.Length - 1);
|
|
}
|
|
|
|
spriteRenderer.sprite = sprites[currentImgIdx];
|
|
}
|
|
|
|
private void OnValidate()
|
|
{
|
|
if(spriteRenderer != null)
|
|
spriteRenderer = GetComponent<SpriteRenderer>();
|
|
}
|
|
}
|