using UnityEngine;
public class ButtonMotion : MonoBehaviour
{
public float Duration = 0.2f;
public float MinScale = 1;
public float MaxScale = 1.5f;
public float Elastic = 0.4f;
private float mTime;
private bool mIsHover;
private void Awake()
{
mTime = Duration;
}
private void Update()
{
mTime += Time.deltaTime;
var t = Mathf.Clamp01( mTime / Duration );
var v0 = Mathf.Sin( Mathf.PI * 0.5f * t );
var vx = v0 + Mathf.Sin( Mathf.PI * 2f * v0 ) * Elastic;
var vy = v0 - Mathf.Sin( Mathf.PI * 2f * v0 ) * Elastic;
if ( !mIsHover )
{
vx = 1 - vx;
vy = 1 - vy;
}
var localScale = transform.localScale;
localScale.x = Mathf.Lerp( MinScale, MaxScale, vx );
localScale.y = Mathf.Lerp( MinScale, MaxScale, vy );
transform.localScale = localScale;
}
private void OnHover( bool isOver )
{
mIsHover = isOver;
mTime = 0;
}
}
- 上記のスクリプトを ButtonMover.cs という名前で Unity プロジェクトに追加する
- UISprite と BoxCollider がアタッチされたオブジェクトに ButtonMover.cs をアタッチする
