Tuto : Intégrer le plugin Haptic sur Unity3D

Bonjour,

Vous savez ce qui, selon moi fait un très bon jeu ?

Au delà du fait d’avoir une super idée, un bon gameplay, un beau design et une bonne pub ?

Bon, je vous l’accorde, à ce niveau, ça semble accessoire, mais c’est ce qui différencie les bons jeux des très bons jeux : les détails. Je peux faire un super jeu de simulation de voiture qui se vend à plusieurs millions de copies et recevoir des commentaires du genres : « C’est génial ce jeu, si j’ouvre les vitres des voitures y’a le bruit d’ouvertures ! ». Le gars qui a passé 6 mois a régler la physique des voitures est moins félicité que le stagiaire qui a codé le bruit sur les vitres… Et j’exagère à peine.

Bon, tous ça pour vous parler de vibrations, l’un des petits détails insignifiants dans un jeu qui créent l’identité même du jeu.

La vibration, c’est le toucher. Un sens très naturel et subjectif… Utiliser 3 sens au lieu de 2, c’est comme ajouter du son sur un jeu muet. C’est pas obligatoire, mais, c’est ça qui fait l’ambiance.

 

La société Immersion propose une librairie gratuite, super sympa et très pratique compatible Unity. (Merci Immersion)

Si vous voulez tester les effets, c’est simple, installez l’application d’exemple « Haptic Effect Preview » :

haptic

 

Vous pouvez aussi tester mon jeu (Et lui mettre 5 étoiles ^.^) :

deathship

 

 

Voyons maintenant comment l’utiliser sur un projet Unity d’exemple.

1 Download SDK

Vous pouvez télécharger le dernier SDK (hapticpluginforunity_v3_5_30.zip) sur le site de Immersion.

Site officiel

2 Décompressez ce fichier

Vous obtenez le fichier TouchSense.unitypackage

 

3 Créez un nouveau projet Unity

Image1

4 Importez le package Haptic

Image2

 

Image3

 

5 Créez un script d’exemple

Créez un script c# nommé HapticEffet.cs et assignez le à la Camera.

using UnityEngine;
using System.Collections;

public class HapticEffect : MonoBehaviour
{

	// Use this for initialization
	void Start ()
    {
	}

	// Update is called once per frame
	void Update() 
    {
        if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began)
        {
            TouchSense.instance.playBuiltinEffect(TouchSense.IMPACT_METAL_33);
        }
	}
}

 

6 Update libImmEmulatorJ.so

Si vous essayez de lancer maintenant => ça crash :'(

La librairie libImmEmulatorJ.so » n’est pas à jour sur le package officiel, il faut récupérer la dernière version :

libImmEmulatorJ.so

Et remplacer la version existante par celle-ci.

Image4

7 Corriger les appels à la lib

Si vous essayez de lancer maintenant => ça crash :'(

Il faut supprimer les « .so » dans le fichier D:\Haptic Sample\Unity Project\Assets\Plugins\TouchSense.cs

#if UNITY_ANDROID
    [DllImport("libImmEmulatorJ.so")]
    private static extern int ImmVibePlayUHLEffect(int hDeviceHandle, int nEffectIndex, ref int phEffectHandle);
    [DllImport("libImmEmulatorJ.so")]
    private static extern int ImmVibeStopPlayingEffect(int hDeviceHandle, int hEffectHandle);
#endif

devient :

 

#if UNITY_ANDROID
    [DllImport("libImmEmulatorJ")]
    private static extern int ImmVibePlayUHLEffect(int hDeviceHandle, int nEffectIndex, ref int phEffectHandle);
    [DllImport("libImmEmulatorJ")]
    private static extern int ImmVibeStopPlayingEffect(int hDeviceHandle, int hEffectHandle);
#endif

 

8 Importez le package Haptic

Si vous essayez de lancer maintenant => ça crash :'(

En fouillant un peu (ou beaucoup), on se rend compte qu’l manque la permission android.permission.VIBRATE

Il faut ajouter une méthode bidon qui utilise la vibration sur Unity. (Unity va ajouter cette permission tout seul)

using UnityEngine;
using System.Collections;

public class HapticEffect : MonoBehaviour
{

	// Use this for initialization
	void Start ()
    {
	}

	// Update is called once per frame
	void Update() 
    {
        if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began)
        {
            TouchSense.instance.playBuiltinEffect(TouchSense.EXPLOSION3);
        }
}

    // This method only exist to activate permission "android.permission.VIBRATE"
    void UnusedButUsefulMethod()
    {
        Handheld.Vibrate();
    }
}

9 Lancez

ça marche 🙂

 

10 Immersion

Si votre jeu est sur Google Play, vous devez ajouter la ligne :

“Integrated with Immersion Tactile Effects”

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *