본문 바로가기

Unity

Unity - 진동(Vibration) - 안드로이드 한정

모바일 게임을 만들 때 진동을 사용할 때가 있음

 

본인은 구글링하다가 찾은 것이 플러그인

 

플러그인 해당 코드는 아래와 같음

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using UnityEngine;
using System.Collections;
 
public static class Vibration
{
 
#if UNITY_ANDROID && !UNITY_EDITOR
    public static AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    public static AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    public static AndroidJavaObject vibrator = currentActivity.Call<AndroidJavaObject>("getSystemService""vibrator");
#else
    public static AndroidJavaClass unityPlayer;
    public static AndroidJavaObject currentActivity;
    public static AndroidJavaObject vibrator;
#endif
 
    public static void Vibrate()
    {
        if (isAndroid())
            vibrator.Call("vibrate");
        else
            Handheld.Vibrate();
    }
 
 
    public static void Vibrate(long milliseconds)
    {
        if (isAndroid())
            vibrator.Call("vibrate", milliseconds);
        else
            Handheld.Vibrate();
    }
 
    public static void Vibrate(long[] pattern, int repeat)
    {
        if (isAndroid())
            vibrator.Call("vibrate", pattern, repeat);
        else
            Handheld.Vibrate();
    }
 
    public static bool HasVibrator()
    {
        return isAndroid();
    }
 
    public static void Cancel()
    {
        if (isAndroid())
            vibrator.Call("cancel");
    }
 
    private static bool isAndroid()
    {
#if UNITY_ANDROID && !UNITY_EDITOR
        return true;
#else
        return false;
#endif
    }
}
cs

 

이 플러그인에서 사용할만한 함수는 void Vibrate(long ms) 임

 

플레이어가 타격 당할 때나 이 함수를 실행시키면 됨

 

사용하고 싶은 곳에서 사용하기

 

 

또한 설정창에 Vibration을 on/off하고 싶으면 위의 코드나 static class어느 곳에서든

변수를 추가해서 Vibrate함수에 사용하면 됨

 

 

 

 

 

 

=== 참고 ===

무언가를 가져오거나 남에거를 사용할 때 "플러그인" 혹은 "라이브러리"를 쓴다고 표현하는 것 같아서

 

플러그인과 라이브러리의 차이가 갑자기 궁금해졌음

 

https://ko.strephonsays.com/what-is-the-difference-between-plugin-and-library

예를들면 위에 것은 진동이라는 기능을 추가하고 향상시키는 것이므로 플러그인이고

알고리즘 STL를 추가하여 sort를 하는 것은 lib임

 

아~~~~~주 조금 다르게 말하는 사람도 있음

>>> 플러그인은 하나의 기능추가 이고 라이브러리는 플러그인의 집합이라고 말함

 

 

결론은 가져와서 사용한다는 것에 비슷하나 명백한 차이는 기능을 진짜 그냥 가져다 쓰면 플러그인이고

개발을 더 쉽게 도와주면 라이브러리 인듯