Unityで任意の時間バイブレーションさせるスクリプト | STUDIO yu- blog

STUDIO yu- blog

備忘録メモ。プランニングや技術関連が中心。

using UnityEngine;
using System.Collections;

public class VibrateScript {
    public static void vibrate(int msec) {
        AndroidJavaObject unityPlayer = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" );
        AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>( "currentActivity" );
        AndroidJavaObject vibrator = currentActivity.Call<AndroidJavaObject>("getSystemService", "vibrator");

        vibrator.Call("vibrate", msec);

vibrator.Dispose();
        currentActivity.Dispose();
        unityPlayer.Dispose();
    }
}
                                                                                    

はい。別段特別なことはしてないですが。
こちらのスクリプトをPluginsフォルダ以下に配置してやれば準備OKです。
VibrateScript.vibrate(50)など、ms単位で指定して端末をバイブさせることができます。

1コールごとにnewが走るのが気持ち悪い場合は、public staticで
InitializeとDestroyを定義してやってください。

ちなみにAndroidのバイブレーションを使用する場合、パーミッションの設定が必要になります。
manifest.xmlを直接編集しても良いですが、他のアセットから置換される可能性もあるので、
上記スクリプトとは別にHandheld.Vibrate()を呼んでおくと、
Unityが自動でパーミッションを設定してくれるので便利です。