[MY-AL] Zoom caméra selon la position des joueurs

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
balouu
Messages : 14
Inscription : 13 Fév 2017 17:12

[MY-AL] Zoom caméra selon la position des joueurs

Message par balouu » 06 Avr 2017 17:53

Bonjour,
Alors voilà, pour ce projet j'ai:
- Une caméra
- Un point P fixe que ma caméra va suivre en translation et qui sera toujours au centre de l'écran, qui se déplace en fonction de la position des joueurs
- Et donc plusieurs joueurs

L'idée, c'est de pouvoir faire dézoomer la caméra lorsque l'un des joueurs va trop loin, pour éviter qu'il sorte de l'écran et soit perdu.
Alors selon moi il y a deux solutions:

- Soit on fait comme les appareils photo en modifiant la focale de la caméra, mais je sais pas si c'est faisable avec la caméra Unity
- Ou alors (c'est la solution que j eprivilégie) déplacer la caméra sur l'axe correspondant à la droite passant par la caméra et le point P.

Le problème que j'ai, c'est que pour la 1ere solution je ne sais même pas si c'est jouable, et pour la seconde, bien que je visualise assez bien mathématiquement cette distance, je ne sais pas comment la retranscrire en code C#

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: [MY-AL] Zoom caméra selon la position des joueurs

Message par evereal » 07 Avr 2017 09:02

Pour la solution 1
https://docs.unity3d.com/ScriptReferenc ... fView.html

Pour la solution 2
https://docs.unity3d.com/ScriptReferenc ... tance.html
Si tu as plus de 2 personnages, tu calcule la distance entre les 2 premiers pour ce résultat avec la distance du 3eme, puis avec le 4eme, ...

Code : Tout sélectionner

private ArrayList<GameObject> personnage;
private GameObject p;

p.position = personnage[0].position;
for (int i =1; i < personnage.count; i++) {
  p.position = Vector3.Distance(p.position, personnage[i].position);
}
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Répondre

Revenir vers « (C#) CSharp »