I. Introduction▲
Le projet présenté dans cette série est tout aussi bien compatible avec Unity 4.6 qu'avec Unity 5.
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Unity - Roguelike 2D - Mobile
III. Résumé▲
Nous avons terminé le jeu, il ne reste plus qu'à assurer son bon fonctionnement sur les appareils mobiles, notamment en permettant aux joueurs de jouer avec l'écran tactile.
III-A. Processus▲
Premièrement, changez la cible du projet afin de créer un exécutable pour iOS :
File → Build Settings… → iOS → Switch Platform
III-B. Player.cs▲
Il est nécessaire de modifier le script afin de déplacer le joueur suivant les mouvements de toucher de l'utilisateur.
Pour cela, la variable touchOrigin est créée. Elle représente un vecteur 2D, mémorisant l'endroit où l'utilisateur commence le toucher.
Sachant que le support d'écran tactile n'est pas toujours nécessaire, nous allons ajouter du code spécifique à chaque plateforme, qui ne sera exécuté que si telle ou telle plateforme est utilisée. Ainsi, le code gérant le clavier est entouré ainsi :
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBPLAYER
// Récupère les entrées du gestionnaire d'entrées, l'arrondit en un entier et le stocke dans horizontal pour définir la direction sur l'axe des X.
horizontal =
(
int
) (
Input.
GetAxisRaw (
"Horizontal"
));
// Récupère les entrées du gestionnaire d'entrées, l'arrondit en un entier et le stocke dans vertical pour définir la direction sur l'axe des Y.
vertical =
(
int
) (
Input.
GetAxisRaw (
"Vertical"
));
// Vérifie si le déplacement est horizontal, si c'est le cas vertical est mis à zéro.
if
(
horizontal !=
0
)
{
vertical =
0
;
}
#endif
Nous faisons une clause #else afin de gérer tous les autres périphériques (iOS, Android, Windows Phone 8…).
#else
// Vérifie si Input a détecté au moins un toucher
if
(
Input.
touchCount >
0
)
{
// Conserve le premier toucher détecté.
Touch myTouch =
Input.
touches[
0
];
// Vérifie si l'étape du toucher est un commencement.
if
(
myTouch.
phase ==
TouchPhase.
Began)
{
// Si c'est le cas, sauvegarde la position d'origine du toucher.
touchOrigin =
myTouch.
position;
}
// Si l'étape du toucher n'est pas un commencement, mais que c'est sa fin et que la coordonnée X de l'origine est plus grande que 0 :
else
if
(
myTouch.
phase ==
TouchPhase.
Ended &&
touchOrigin.
x >=
0
)
{
// Définit touchEnd avec la position finale du toucher.
Vector2 touchEnd =
myTouch.
position;
// Calcul la différence entre le début et la position de fin sur l'axe des X.
float
x =
touchEnd.
x -
touchOrigin.
x;
// Calcul la différence entre le début et la position de fin sur l'axe des Y.
float
y =
touchEnd.
y -
touchOrigin.
y;
// Définit touchOrigin.x à -1 pour ne pas effectuer plusieurs fois la même condition.
touchOrigin.
x =
-
1
;
// Vérifie si la différence sur l'axe des X est plus grande que celle sur l'axe des Y.
if
(
Mathf.
Abs
(
x) >
Mathf.
Abs
(
y))
// Si x est plus grand que zéro, définit la variable horizontal à 1, sinon à -1.
horizontal =
x >
0
?
1
:
-
1
;
else
// Si y est plus grand que zéro, définit la variable vertical à 1, sinon à -1.
vertical =
y >
0
?
1
:
-
1
;
}
}
#endif // Fin de la section spécifique aux mobiles
IV. Ressources▲
Vous pouvez télécharger les ressources pour ce projet sur l'Asset Store de Unity.
V. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.