진동 설정하기(Vibration)
Unity 에서 Native 로 Android에 있는 기능을 접근하기 위한 메소드인 AndroidJavaClass를 통해서 진동값을 설정한다.
진동을 설정하기 위해서는 권한을 등록해야한다.
AndroidManifest.xml에 값을 추가한다.
<uses-permission android:name="android.permission.VIBRATE" />
반응형
그리고 프로젝트의 하이어라키의 경로를 추가한다.
[Plugins]-[Android]
AndroidManifest.xml은 빌드하는 과정에서 생성되는데 위의 경로에 있으면 덮어쓰기를 한다.
그리고 Vibration의 클래스를 작성한다.
using UnityEngine;
using System.Collections;
public class Vibrate
{
#if UNITY_ANDROID && !UNITY_EDITOR
public AndroidJavaClass unityPlayer = null;
public AndroidJavaObject currentActivity = null;
public AndroidJavaObject AndroidVibrator = null;
#endif
public void Vibrate()
{
#if UNITY_ANDROID && !UNITY_EDITOR
unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidVibrator = currentActivity.Call<AndroidJavaObject>("getSystemService", "vibrator");
#endif
}
//Functions from https://developer.android.com/reference/android/os/Vibrator.html
public void vibrate()
{
AndroidVibrator.Call("vibrate");
}
public void vibrate(long milliseconds)
{
#if UNITY_ANDROID && !UNITY_EDITOR
AndroidVibrator.Call("vibrate", milliseconds);
#else
Handheld.Vibrate();
#endif
}
public void vibrate(long[] pattern, int repeat)
{
#if UNITY_ANDROID && !UNITY_EDITOR
AndroidVibrator.Call("vibrate", pattern, repeat);
#else
Handheld.Vibrate();
#endif
}
public void cancel()
{
#if UNITY_ANDROID && !UNITY_EDITOR
AndroidVibrator.Call("cancel");
#endif
}
public bool hasVibrator()
{
bool returnValue = false;
#if UNITY_ANDROID && !UNITY_EDITOR
returnValue = AndroidVibrator.Call<bool>("hasVibrator");
#endif
return returnValue;
}
}
사용하는 샘플 코드는 다음과 같다.
반응형
플랫폼 환경이 (UNITY_ANDROID 고 EDITOR가 아닌경우) 안드로이드 폰인경우에는 Android 설정 값을 기준으로 진동을 설정하고 그게 아니면 Unity 에서 지원하는 진동에 대한 기본 설정을 처리한다.
Vibrate vibrate = new Vibrate();
vibrate.vibrate();
//Vibrate for 500 milliseconds
vibrate.vibrate(500);
//Vibration Pattern
long[] pattern = { 0, 200, 0, 500 };
vibrate.vibrate(pattern, 0);
//Cancel Vibration
vibrate.cancel();
URL : [Android Vibration]
URL : [Unity Handheld.Vibrate]
URL : [Unity Android Manifest]
URL : [Unity AndroidJavaClass]
★☆☆☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
Unity)해결) error CS1704: An assembly with the same name `SyntaxTree.VisualStudio.Unity.Bridge' has already been imported. (2) | 2020.11.23 |
---|---|
Unity) TextMesh Pro Sprite Importer(이모티콘/이모지 ☝) (2) | 2020.11.18 |
Unity) LINQ 쿼리 (using System.Linq) (0) | 2020.11.11 |
Unity) Memory Profiler (4) | 2020.11.03 |
Unity) 로그 파일 경로 ( Log File Path ) (4) | 2020.10.28 |
댓글