上下移動と回転を繰り返すコイン
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; // DOTween dotween.demigiant.com
/// <summary>
/// 上下移動と回転を繰り返すコイン
/// </summary>
public class CoinFloatingAnimation : MonoBehaviour
{
[SerializeField] float moveValue = 0.5f;
[SerializeField] float duration = 1f;
[SerializeField] Ease ease = Ease.InOutSine;
[SerializeField] List<Sprite> sprites = default;
[SerializeField] float spriteChangeSpan = 0.2f;
private void Start ()
{
MoveTweening ();
StartCoroutine ( SpriteAnimation () );
}
// 上下移動はDOTween使用
private void MoveTweening ()
{
var tweenParams = new TweenParams().SetEase(ease).SetRelative();
var sequence = DOTween.Sequence();
sequence.Append ( transform.DOMoveY ( moveValue, duration ).SetAs ( tweenParams ) );
sequence.Append ( transform.DOMoveY ( -moveValue, duration ).SetAs ( tweenParams ) );
sequence.SetLoops ( -1 );
}
// 回転はSpriteをコルーチンで切り替える
private IEnumerator SpriteAnimation ()
{
var _renderer = GetComponent<SpriteRenderer> ();
while ( _renderer != null )
{
for ( int i = 0 ; i < sprites.Count ; i++ )
{
_renderer.sprite = sprites[i];
yield return new WaitForSeconds ( spriteChangeSpan );
}
}
}
}