コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】NGUIのスプライトにマウスポインタが重なった時の演出を実装する その2

using UnityEngine;

public class ButtonMotion : MonoBehaviour
{
    public float Deceleration = 0.6f;
    public float Friction = 0.8f;
    public float MinScale = 1;
    public float MaxScale = 1.5f; 

    private float mAmplitude;
    private float mTargetScale;
    private float mScale;

    private void Awake()
    {
        mScale = MinScale;
        mTargetScale = MinScale;
    }

    private void Update()
    {
        mAmplitude += mTargetScale - mScale;
        mScale += mAmplitude * Friction;
        mAmplitude *= Deceleration;

        if ( Mathf.Abs( mTargetScale - mScale ) < 0.005f && 
             Mathf.Abs( mAmplitude ) < 0.001f )
        {
            mScale = mTargetScale;
        }
        
        var localScale = transform.localScale;
        localScale.x = mScale;
        localScale.y = mScale;
        transform.localScale = localScale;
    }

    private void OnHover( bool isOver )
    {
        mTargetScale = isOver ? MaxScale : MinScale;
    }
}
  1. 上記のスクリプトを ButtonMover.cs という名前で Unity プロジェクトに追加する
  2. UISprite と BoxCollider がアタッチされたオブジェクトに ButtonMover.cs をアタッチする

f:id:baba_s:20140927170822p:plain

参考サイト

http://blog.project-nya.jp/817