IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

Mouvement caméra type FPS TPS JS [Unity 5]


Sujet :

Unity

  1. #1
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut Mouvement caméra type FPS TPS JS
    Salut à tous !

    Je suis entrain de travailler sur ceci j’essaie de faire en sorte d'avoir une caméra mobile gérer par la souris qui influe en même temps sur le personnage. C'est à dire que j'ai une caméra qui se situe derrière le personnage et qui en appuyant sur une touche passe au niveau de la vue du personnage, et de base j'étais sur une rotation du personnage par les touches, en revanche j'envisage l'ajout d'un réticule/pointeur, et donc la nécessité d'une camera mobile en fonction de la souris, qui influe sur la rotation du personnage.

    Actuellement le personnage tourne avec la caméra et la souris mais il pète un plomb total et prend de la vitesse, et quand je passe en FPS, la caméra ne regarde plus le bon objet !
    Donc le mouvement n'est pas correcte et beaucoup trop sensible et le tout s'emballe.....

    Voila le code de CameraMovement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    function Start () {
    	targetCamera = GameObject.Find("Target").transform;
    	targetCharacter = GameObject.Find("Personnage").transform;
    	targetCameraV = GameObject.Find("TargetV").transform;
    	targetView = GameObject.Find("View").transform;
     
    }
    //transform.position = Vector3.Lerp(from, to, speed); work with Quaternion.Slerp()
    function Update () {
     
    	transform.position = Vector3.Lerp(transform.position, targetCamera.position, 0.9);
     
    	to = targetView.transform.position - transform.position;
     
    	//transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(to), 0.9);
    	targetCharacter.LookAt(targetView);
    	transform.LookAt(targetCharacter);
    	targetView.transform.RotateAround (to, to.up, Input.GetAxis ("Mouse X") * Time.deltaTime);
     
    	// targetView doit bouger la camera doit toujours fixer ce point ! modif dans movecharacter
     
    	if(Input.GetKeyDown(changeCamera))
    	{
    		if(targetCamera != targetCameraV)
    		{
    			targetCamera = targetCameraV;
    			transform.LookAt(targetView);
    		}
    		else
    		{
    			targetCamera = GameObject.Find("Target").transform;
    		}
    	}
    }

    Donc voilà voilà


    J'ai pas mal creusé de mon coté ! et je suis parvenu à un bout de solution, ce qui fait que maintenant le personnage tourne bien en fonction de la souris en revanche il stop sa rotation lorsque la souris arrive au bout de l'écran, alors qu'il devrait la continuer... je pense donc qu'il faut que je fasse une sorte de mapping en fonction de la résolution du screen.

    Donc actuellement le code est devenue ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    transform.position = Vector3.Lerp(transform.position, targetCamera.position, 0.9);
     
    	to = targetView.transform.position - transform.position;
     
    	//transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(to), 0.9);
     
    	targetCharacter.LookAt(targetView);
    	transform.LookAt(targetCharacter);
    	targetView.transform.position = new Vector3(Input.mousePosition.x,0, Input.mousePosition.y);
     
    	// targetView doit bouger la camera doit toujours fixer ce point ! limitte de screen a prendre en compte!
     
    	if(Input.GetKeyDown(changeCamera))
    	{
    		if(targetCamera != targetCameraV)
    		{
    			targetCamera = targetCameraV;
    			//transform.LookAt(targetView);
    		}
    		else
    		{
    			targetCamera = GameObject.Find("Target").transform;
    		}
    	}
    }


    En espérant que vous pourriez m'aider!

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    Pour la souris, il faut utiliser le delta (avec Input.GetAxis()) (voir cet exemple : http://wiki.unity3d.com/index.php/MouseCameraControl)

    Pour la caméra, je vous conseille d'utiliser des états (voir machine à états). Pour moi, ce serait quatre états : GoingFPS, GoingTPS, FPS, TPS. Pour les quatre états, la fonction Update agit différemment. Évidemment, pour les états de transition (Going*), le Lerp sera la solution, comme vous l'avez déjà planifié. Ainsi, cela sera plus simple pour vous, à gérer.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Pour la souris, c'est en Csharp, je suis pas trop copain avec le C ... je pense pouvoir me dépatouiller pour le traduire en JavaScript, je savais pas que le wiki pouvais présenter des éléments comme cela.

    Pour la caméra, quand on parle d'état on parle bien de boolean du coup ?? ou on va plutôt s'orienter sur des fonctions ??

    Merci

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Pour les états, c'est souvent implémenter par une énumération enum (en c#).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Est ce qu'il serait possible d'avoir quelques exemples, je crois que je suis entrain de me perdre dans le tout !

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Un morceau de code, pour donner un exemple d'utilisation du enum, ou de comment je l'aurais écrit ?
    Sur quoi avez vous buté ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Non les énumérations y a pas de soucis, je suis vraiment sur la gestion de la camera/personnage par la souris.

    En ce qui concerne la machine à état, dans ce cas on parle bien d'un automate avec des états d'acceptations: les vues, et deux états pour goFPS goTPS qui sont des états de transitions ?

  8. #8
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    J'ai trouvé une bonne partie de réponse à mon problème sur la caméra/rotation du personnage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //La caméra suit le personnage
    	transform.position = Vector3.Lerp(transform.position, targetCamera.position, 0.9);
    	//Translate la cible de la caméra sur l'axe Z pour obtenir une caméra plus mobile (non optimale)
    	targetView.transform.Translate(0,0,-Input.GetAxis("Mouse Y") * 2); //, Space.World
     
    	//Le point caméra arrière personnage regarde la cible devant le personnage, permet d'orienter la caméra dans le bon sens
    	targetCamera.LookAt(targetView);
    	//targetCharacter.LookAt(targetView);
    	//la caméra regarde la cible devant le personnage
    	transform.LookAt(targetView);
    plus la ligne qui va dans le controller du personnage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	//le personnage tourne en fonction de la souris
    	transform.Rotate(0, Input.GetAxis("Mouse X") * 2, 0);

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Pourriez vous faire une vidéo du résultat, s'il vous plait.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  10. #10
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Pourriez vous faire une vidéo du résultat, s'il vous plait.
    Oui bien sûr !


    Le tout n'est pas encore optimisé, il faudrait que je rajoute une butée pour conserver un angle de vue utilisable de haut en bas.

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Vidéo privée, je ne peux pas voir.
    Le tout n'est pas encore optimisé, il faudrait que je rajoute une butée pour conserver un angle de vue utilisable de haut en bas.
    C'est une des raisons que je voulais voir le rendu, car le code ne me semblait pas "assez bien".
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  12. #12
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    J'ai remis la vidéo ça doit être bon maintenant

  13. #13
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Vous devez ajouter des interpolations linéaires lors de la transition FPS<->TPS, cela sera plus "naturel". Inspirez vous des débuts de mission de Golden Eye 007 (N64).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  14. #14
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Effectivement je ferrai une interpollation par la suite !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conseil pour une caméra de type FPS
    Par dinamix dans le forum OpenGL
    Réponses: 6
    Dernier message: 16/03/2012, 13h22
  2. Réponses: 2
    Dernier message: 20/08/2008, 11h45
  3. Comment détecter le mouvement d'une caméra
    Par MohEllayali dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 23/05/2008, 20h27
  4. Recrutement pour projet FPS/TPS
    Par Gilgalad1er dans le forum Projets
    Réponses: 22
    Dernier message: 11/09/2007, 11h21
  5. Caméra de type "HomeWorld 2"
    Par bathof dans le forum OpenGL
    Réponses: 6
    Dernier message: 01/06/2007, 21h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo