[RESOLU] Camera en galère avec mon player.
Publié : 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 :
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);
}
}
}