Navigation▲
Tutoriel précédent : Accéder à un composant |
Tutoriel suivant : Accéder aux GameObjects |
I. Vidéo▲
Cliquez pour lire la vidéo
II. Ce qu'il faut retenir▲
II-A. Interagir avec l'utilisateur▲
Pour ce chapitre, la classe qui nous intéressera est la classe Input.
II-A-1. Avec le clavier▲
Pour vérifier si l'utilisateur a appuyé sur la flèche de gauche du clavier, vous pouvez utiliser le code suivant :
La liste des touches testables se trouve ici.
De la même manière, pour déplacer le cube suivant les actions de l'utilisateur, nous ferons ainsi :
private var vitess
:
float;
function Start
(
) {
vitesse =
0
.
2
;
}
function Update
(
) {
if (
Input.GetKeyDown
(
KeyCode.
LeftArrow))
{
this.
transform.Translate
(
Vector3
(-
vitesse,
0
,
0
));
}
}
Finalement, il suffit d'écrire :
private var vitess
:
float;
function Start
(
) {
vitesse =
0
.
2
;
}
function Update
(
) {
if (
Input.GetKeyDown
(
KeyCode.
LeftArrow))
{
this.
transform.Translate
(
Vector3
(-
vitesse,
0
,
0
));
}
else if (
Input.GetKeyDown
(
KeyCode.
RightArrow))
{
this.
transform.Translate
(
Vector3
(
vitesse,
0
,
0
));
}
else if (
Input.GetKeyDown
(
KeyCode.
UpArrow))
{
this.
transform.Translate
(
Vector3
(
0
,
0
,
vitesse));
}
else if (
Input.GetKeyDown
(
KeyCode.
DownArrow))
{
this.
transform.Translate
(
Vector3
(
0
,
0
,
-
vitesse));
}
}
pour déplacer le cube dans toutes les directions.
II-A-2. Avec la souris▲
De manière similaire à l'utilisation du clavier, vous pouvez utiliser la fonction GetMouseButtonDown() de la classe Input pour savoir si le joueur presse un des boutons de la souris :
Voici la correspondance des boutons principaux :
Clic gauche |
0 |
Clic droit |
1 |
Clic sur la molette |
2 |
Vous pouvez accéder aux autres boutons de la souris avec des nombres supérieurs à 2, mais notez bien que ces boutons n'existent pas sur toutes les souris.
II-B. Fluidité d'un jeu vidéo▲
Il est très important qu'un jeu vidéo soit fluide et ce, sur n'importe quelle machine (puissante ou non).
Le code vu ci-dessus est dépendant du nombre d'affichages de la scène. En effet, sur un PC puissant, la scène s'affichera 60 fois par seconde. Le cube pourra donc être déplacé de 60 * 0,2 = 12 unités chaque seconde. Toutefois, sur un PC moins puissant, le jeu ne sera affiché que 30 fois par seconde. Le cube ne pourra alors être déplacé que de 30 * 0,2 = 6 unités par seconde. Une telle différence peut être catastrophique pour le gameplay et il faut donc trouver une méthode qui, indépendamment du nombre d'images par seconde et donc du PC, met à jour le jeu de façon identique.
Pour ce faire, nous utiliserons Time.deltaTime. Unity 3D inscrit dans cette variable le temps écoulé entre deux images. Ainsi, ce temps sera de 1/60 sur une machine puissante et de 1/30 sur une machine plus faible. En multipliant simplement ce temps avec notre vitesse nous pouvons obtenir une valeur fixe et ce, quelle que soit la machine. Voyez ceci avec le calcul précédent :
- pour la machine puissante : 60 * 0,2 *1/60 = 0.2
- pour la machine faible : 30 * 0.2 *1/30 = 0.2
Ce qui est parfait, car nous obtenons toujours le même déplacement, peu importe le nombre d'images par seconde de notre jeu.
Nous obtenons ainsi le code suivant :
private var vitess
:
float;
function Start
(
) {
vitesse =
0
.
2
;
}
function Update
(
) {
var vitesseIndependante =
Time.
deltaTime *
vitesse;
if (
Input.GetKeyDown
(
KeyCode.
LeftArrow))
{
this.
transform.Translate
(
Vector3
(-
vitesseIndependante,
0
,
0
));
}
else if (
Input.GetKeyDown
(
KeyCode.
RightArrow))
{
this.
transform.Translate
(
Vector3
(
vitesseIndependante,
0
,
0
));
}
else if (
Input.GetKeyDown
(
KeyCode.
UpArrow))
{
this.
transform.Translate
(
Vector3
(
0
,
0
,
vitesseIndependante));
}
else if (
Input.GetKeyDown
(
KeyCode.
DownArrow))
{
this.
transform.Translate
(
Vector3
(
0
,
0
,
-
vitesseIndependante));
}
}
III. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum, ou encore, poser vos questions dans le forum Unity.
IV. Remerciements▲
Nous remercions « ToutApprendre » pour l'élaboration et la réalisation de ces vidéos. Vous pouvez retrouver sa chaîne YouTube en suivant ce lien.
Navigation▲
Tutoriel précédent : Accéder à un composant |
Tutoriel suivant : Accéder aux GameObjects |