본문 바로가기
개발/Unity

Unity)AndroidNative) 진동 설정하기(Vibration)

by 테샤르 2020. 11. 12.

 진동 설정하기(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

 

 

반응형

댓글