[RESOLU] Camera en galère avec mon player.

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
alsthorm
Messages : 9
Inscription : 11 Août 2021 13:36

[RESOLU] Camera en galère avec mon player.

Message par alsthorm » 11 Août 2021 15:57

Bonjour,

Mon problème va sans doute vous paraître très simple mais je n'ai Unity que depuis 3 jours et je n'y connais rien en programmation mais je ne demande qu'à apprendre, je regarde différents tutos à droite, à gauche.

Bref j'ai téléchargé un perso avec déjà toutes les animations en lien ici : https://assetstore.unity.com/packages/3 ... sin-184801

Elle bouge, tout va bien pas de souci. Sauf que je voudrais donner le contrôle de la caméra au joueur et qu'elle aille dans la direction de la caméra (comme dans la vidéo 3 du lien indiqué plus haut)

Dans l'asset était fourni un script player Camera, je l'ai lié à mon player defaut et là magie ma caméra tourne. Sauf qu'elle tourne trop. Si ma souris est à gauche elle tourne à gauche sans s'arrêter. Il faut que je centre la souris pile-poil au milieu pour que ça s'arrête... Ce que je souhaite c'est que la caméra tourne mais pas en fonction de l'emplacement du curseur. Qu'elle tourne juste quand il y a un mouvement de la souris. Quand on regarde en haut ou en bas d'ailleurs ça marche ça ne bouge que quand mouvement de la souris bizarrement.

Si quelqu'un peut m'aider "pas à pas" car vraiment je suis noob sur Unity, ça serait vraiment super et quand d'ici dix ans j'aurai fini ce jeu, je le met au générique :p

Ci-dessous le script player camera :

Code : Tout sélectionner

using UnityEngine;

namespace NaughtyCharacter
{
	public class PlayerCamera : MonoBehaviour
	{
		public float ControlRotationSensitivity = 0.0f;
		public Transform Rig; // The root transform of the camera rig
		public Transform Pivot; // The point at which the camera pivots around
		public Transform Target; // The point at which the camera pivots around
		private Vector3 _cameraVelocity;
		Vector2 controllRotation;
		float rotationX = 0;
		public float rotationSpeed = 2.0f;
		public float rotationXLimit = 45.0f;
		private void LateUpdate() 
		{
			SetPosition(Target.transform.position);
			Vector2 CameraInput = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
			UpdateControlRotation();
			
			// Adjust the pitch angle (X Rotation)
			float pitchAngle = controllRotation.x;
			pitchAngle -= CameraInput.y * ControlRotationSensitivity;

			// Adjust the yaw angle (Y Rotation)
			float yawAngle = controllRotation.y;
			yawAngle += CameraInput.x * ControlRotationSensitivity;

			controllRotation = new Vector2(pitchAngle, yawAngle);
			SetControlRotation(controllRotation);
		}

		public void SetPosition(Vector3 position)
		{
			Rig.position = position;
		}

		public void SetControlRotation(Vector2 controlRotation)
		{
			// Y Rotation (Yaw Rotation)
			Quaternion rigTargetLocalRotation = Quaternion.Euler(0.0f, controlRotation.y, 0.0f);

			// X Rotation (Pitch Rotation)
			Quaternion pivotTargetLocalRotation = Quaternion.Euler(controlRotation.x, 0.0f, 0.0f);

			Rig.localRotation = rigTargetLocalRotation;
			Pivot.localRotation = pivotTargetLocalRotation;
		}

		public void UpdateControlRotation()
		{
			// Adjust the pitch angle (X Rotation)
			float pitchAngle = controllRotation.x;
			pitchAngle %= 360.0f;
			pitchAngle = Mathf.Clamp(pitchAngle, -45, 75);

			// Adjust the yaw angle (Y Rotation)
			float yawAngle = controllRotation.y;
			yawAngle %= 360.0f;

			controllRotation = new Vector2(pitchAngle, yawAngle);
		}
	}
}

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: débutant en galère

Message par Max » 11 Août 2021 17:23

Bonjour,
alsthorm a écrit :
11 Août 2021 15:57
Si ma souris est à gauche elle tourne à gauche sans s'arrêter. Il faut que je centre la souris pile-poil au milieu pour que ça s'arrête...
c'est étonnant, car le script de l'asset ne connait pas ce type de soucis. Après je n'ai pas vraiment regardé le script que tu as posté pour éventuellement voir au se situent les différences pouvant expliquer la chose.

Après si tu souhaite limiter la rotation de manière angulaire autour de ton player, tu peux alors regarder du coté de fonction de type Mathf.Clamp(), au niveau de controlRotation.y au niveau de la fonction SetControlRotation().
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

alsthorm
Messages : 9
Inscription : 11 Août 2021 13:36

Re: débutant en galère

Message par alsthorm » 11 Août 2021 18:14

Bonjour,

Déjà merci de ta réponse. Bon si le script de l'asset est bon c'est surement ce que je fais qui ne l'est pas.

Alors je vais te détailler ce que j'ai fait :

1) J'ai placé sur mon terrain le prefab player-default
2) j'ai viré la caméra
3) J'ai lié dans player-default les prefab CameraRig et SpringArm (d'ailleurs celui-ci que je le mette ou pas, je vois pas la différence, je comprends pas bien à quoi il sert)
A ce stade si je lance, la caméra suit bien le joueur mais la souris est inopérante (ce qui est dérangeant car dans cet asset si on fait droite ou gauche, elle fait un pas sur le côté mais ne tourne pas)
4) J'ai ajouté en composant dans Player-default le script playerCamera avec les données ci-dessous :
Control rotation sensibility : 1
Rig : CameraRig (Transform)
Pivot : Pivot (Transform)
Taget PlayerDefault (Transform)
Camera : MainCamera(Camera)

Et là ça me donne ce que j'ai décrit c'est à dire ça tourne dès que le curseur de la souris n'est pas centré..

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: débutant en galère

Message par Max » 11 Août 2021 18:26

En fait c'est là que je ne comprends pas trop ta démarche.
Si tu souhaites que la camera suive le Player, alors pourquoi ne pas rester sur ce qui est fait dans l'asset dont tu parles, qui fonctionne plutôt bien. Ou alors quelque chose m'a échappée dans ta demande ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

alsthorm
Messages : 9
Inscription : 11 Août 2021 13:36

Re: débutant en galère

Message par alsthorm » 11 Août 2021 18:30

Bien si je garde ce qui est fait mon perso ne tourne pas.
Les flèches droite et gauche lui font faire des pas sur le côté mais elle ne tourne pas.
Du coup l'idée n'était pas de supprimer ses pas de côté qui sont sympa mais de pouvoir la guider à la souris.

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: débutant en galère

Message par Max » 11 Août 2021 18:45

dans ce cas, le soucis vient alors peut-être de la façon de contrôler ton personnage.
Tu emploies aussi les scripts de l'asset ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

alsthorm
Messages : 9
Inscription : 11 Août 2021 13:36

Re: débutant en galère

Message par alsthorm » 11 Août 2021 19:11

Oui en fait il est vraiment prêt à l'emploi, tu mets le prefab, Tu peux le bouger, sauter, faire un pas à droite, à gauche, frapper, faire une super frappe.

J'ai mis le prefab CameraRig fourni avec et direct ça créé la caméra qui suit le personnage.

Et c'est là que je me suis rendu compte que le perso en revanche ne tournait pas.

Du coup j'ai mis en valeur dans PlayerCamera (qui se met tout seul quand on met le prefab CameraRig) la valeur de ControlRotationSensibility à 1 (c'était sur 0) et Target sur PlayerdeFault (c'était sur None) et là ça pivote en haut quand on bouge la souris sans souci mais ça tourne à droite ou gauche sans s'arrêter si la souris n'est pas centrée.

Sur la 3ème vidéo du site on voit bien que c'est faisable mais j'ignore comment..
https://assetstore.unity.com/packages/3 ... sin-184801

Je n'ai touché à rien d'autre.

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: débutant en galère

Message par Max » 12 Août 2021 11:38

alsthorm a écrit :
11 Août 2021 19:11
J'ai mis le prefab CameraRig fourni avec et direct ça créé la caméra qui suit le personnage.

Et c'est là que je me suis rendu compte que le perso en revanche ne tournait pas.
comme je te le soulignais plus haut, ce n'est pas la camera qui gère les déplacement/comportement de ton personnage. Celui-ci doit avoir des scripts dédiés pour cela, comme sur le personnage fournis avec le package de l'asset.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

alsthorm
Messages : 9
Inscription : 11 Août 2021 13:36

Re: débutant en galère

Message par alsthorm » 12 Août 2021 12:19

Bon désolé je galère alors je ne dois pas faire les choses correctement.

Mais du coup, oh miracle, j'ai réussi.

Bon vraiment du bidouillage. J'ai viré dans le script fourni la rotation et laisser le mouvement de caméra haut et bas qui étaient bien paramétrés.

Et j'ai créé un nouveau script pour la rotation car n'arrivant pas trop à modifier correctement celui fourni.

Finalement, je pense que je suis trop néophyte pour bien m'exprimer et que de ce fait personne n'aura vraiment compris ma problématique mais j'ai bien conscience que c'est certainement ma faute.

Merci d'avoir pris le temps de me répondre.

Bon maintenant va falloir que je rende mes mouvements de caméra un peu plus smooth mais j'ai vu des tutos là dessus...

On peut clore le sujet.

A+

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: débutant en galère

Message par Max » 12 Août 2021 13:04

alsthorm a écrit :
12 Août 2021 12:19
Finalement, je pense que je suis trop néophyte pour bien m'exprimer et que de ce fait personne n'aura vraiment compris ma problématique mais j'ai bien conscience que c'est certainement ma faute.
notre rôle est aussi d'essayer de poser les bonnes questions pour mieux cerner le problème, mais ce n'est pas toujours évident, l'idéal serait d'être derrière ton épaule pour avoir tous les éléments souhaités sous les yeux ;)

Après, si tu es arrivé à tes fins, alors c'est déjà un premier pas, même si c'est du bricolage. On apprend toujours malgré tout.
A titre d'info, Unity fournis désormais des packages pour bien débuter, comme le Third Person Character Controller, voir le billet d'UT sur le sujet: https://blog.unity.com/games/say-hello- ... blog-promo
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « Scripting »