Marqueurs de carte
Los Santos est gigantesque. Si tu te contentes de dire au joueur « retrouve le contact sur les quais », il ne trouvera jamais le bon conteneur sans guidage visuel. GTA V utilise deux outils complémentaires pour orienter le joueur : les Blips sur le radar, et les Marqueurs dessinés directement au sol dans le monde 3D.
Les blips du radar
Un Blip est une icône affichée sur la mini-carte et la carte en pause. Tu peux attacher un blip à des coordonnées fixes ou directement à une entité en mouvement.
Créer et styliser un blip
using GTA;
using GTA.Math;
Vector3 positionObjectif = new Vector3(-150f, -960f, 30f);
// 1. Créer le blip à l'emplacement voulu
Blip blipObjectif = World.CreateBlip(positionObjectif);
// 2. Personnaliser son apparence
blipObjectif.Sprite = BlipSprite.Standard; // Icône circulaire
blipObjectif.Color = BlipColor.Yellow;
blipObjectif.Name = "Point de rendez-vous";
// 3. Activer le tracé GPS sur la mini-carte
blipObjectif.ShowRoute = true;
Quand tu l'attaches à une entité mobile (un véhicule ou un PNJ) :
// Le blip suit automatiquement l'acteur partout où il se déplace
Blip blipEnnemi = pedCible.AddBlip();
blipEnnemi.Sprite = BlipSprite.Enemy;
blipEnnemi.Color = BlipColor.Red;
Supprimer un blip
Comme les peds ou les véhicules, un blip est une ressource moteur dotée d'un handle. Si tu oublies de le supprimer une fois l'objectif atteint, il restera fixé sur la carte pour toujours :
if (blipObjectif != null && blipObjectif.Exists())
{
blipObjectif.Delete();
}
Les marqueurs 3D au sol
Alors que le blip donne la direction générale sur le radar, le Marqueur matérialise l'endroit exact où le joueur doit poser les pieds ou garer sa voiture.
Comme les marqueurs sont dessinés à l'écran image par image, tu appelles World.DrawMarker dans ton gestionnaire OnTick :
private void OnTick(object sender, EventArgs e)
{
if (!_missionActive)
{
return;
}
// Dessiner un cylindre vertical jaune translucide au sol
World.DrawMarker(
MarkerType.VerticalCylinder,
_positionObjectif - new Vector3(0f, 0f, 1f), // Légèrement abaissé pour toucher l'asphalte
Vector3.Zero,
Vector3.Zero,
new Vector3(2.5f, 2.5f, 1.5f), // Diamètre et hauteur
System.Drawing.Color.FromArgb(180, 255, 235, 59) // Jaune semi-transparent
);
}
Dès que le joueur pénètre dans le cylindre (player.Position.DistanceTo(_positionObjectif) < 2.5f), l'objectif est considéré comme atteint, tu supprimes le blip et tu cesses de dessiner le marqueur.
Dans la leçon suivante, nous étudions les objectifs de mission : gérer la victoire, l'échec, l'abandon, afficher des sous-titres et décerner une récompense unique.