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!
Partager