I. Introduction▲
Cette série explique pas à pas la création d'un jeu 2D dans lequel un vaisseau collecte des pépites d'or.
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Unity - UFO 2D - Faire suivre le joueur par la caméra
III. Résumé▲
Dans cette vidéo, vous allez permettre à la caméra de suivre les déplacements du joueur.
III-A. Liens entre les objets▲
Pour que la caméra suive le joueur, il faut que les deux objets soient liés. Pour ce faire, dans la hiérarchie, vous pouvez placer la caméra comme enfant du joueur. Ainsi, le joueur devient le parent de la caméra. Si le parent d'un objet se déplace, alors les enfants se déplacent aussi.
Le problème de cette solution est que le vaisseau peut tourner sur lui-même (lorsqu'il touche un mur), provoquant ainsi la rotation de la caméra. Le résultat est particulièrement désagréable pour le joueur.
Du coup, placer la caméra comme enfant du joueur n'est pas la bonne solution.
III-B. Script de suivi d'un objet▲
Toutefois, il est possible, à l'aide d'un script, d'implémenter le suivi de la position du joueur par la caméra sans synchroniser la rotation.
using
UnityEngine;
using
System.
Collections;
public
class
CompleteCameraController :
MonoBehaviour {
public
GameObject player;
// Variable publique pour stocker la référence vers l'objet du joueur
private
Vector3 offset;
// Variable privée pour stocker le décalage entre le joueur et la caméra
// Initialisation
void
Start (
)
{
// Calcul et stocke le décalage entre le joueur et la caméra
offset =
transform.
position -
player.
transform.
position;
}
// La fonction LateUpdate() est appelée après la fonction Update() à chaque image
void
LateUpdate (
)
{
// Définit la position de la caméra avec celle du joueur tout en ajoutant un décalage.
transform.
position =
player.
transform.
position +
offset;
}
}
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.