진동 설정하기(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]
Vibrator | Android 개발자 | Android Developers
developer.android.com
URL : [Unity Handheld.Vibrate]
Unity - Scripting API: Handheld.Vibrate
Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close
docs.unity3d.com
URL : [Unity Android Manifest]
Android 매니페스트 - Unity 매뉴얼
Android 매니페스트는 Android 앱에 대한 중요한 메타 데이터가 포함된 XML 파일입니다. 여기에는 패키지 이름, 액티비티 이름, 메인 작업(앱 엔트리 포인트), 설정, Android 버전 지원, 하드웨어 기능 지
docs.unity3d.com
URL : [Unity AndroidJavaClass]
Unity - 스크립팅 API: AndroidJavaClass
Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. 닫기
docs.unity3d.com
★☆☆☆☆
'개발 > 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 |
댓글