(Pour le titre j'ai pas trouvé mieux expliqué , mais vous allez comprendre par la suite)
Voilà donc j'ai un joueur et une camera dans un même parent "Wolf" :
http://prntscr.com/7vpt6v
La camera elle , fixe une sphère appelé "Target" (Image ci dessous) et quand je tourne la souris à droite ou à gauche, la camera tourne autour de ce "Target", elle ne fixe pas le joueur(Mais le joueur sera toujours dans le champ de vision de la camera bien sûr)
http://prntscr.com/7vpugz
Et le joueur lui, quand on appuis sur les flèches ou z,q,s,d il se déplace selon la volonté de l'utilisateur.
Mais y'a quelque chose qui ne va pas (Les rêves ont une fin) :
Je me déplace,je tourne la camera , tous va bien! Mais, il y a un problème au niveau des axes de déplacement : Si je tourne la camera par exemple à 180 degrés, je vois tous ce qui a derrière le perso mais, pour me tourner avec le perso , c'est impossible. C'est à dire qu'en gros, je veut que l'axe Z de la camera devient l'axe Z du joueur, et ça , a chaque fois que la caméra tourne. Et en gros, a chaque fois que la camera tourne, si j'appuis sur la touche pour avancer, le perso avance selon la rotation de la camera. Plus précis : Je tourne la camera a droite du joueur, la droite du perso devient alors le devant. Idem pour : Je tourne la camera à 180 degrés (Donc je vois derrière le perso) et donc le "derrière" du perso devient le "devant". Un peu a la Warframe si vous êtes connaisseur
J'espère que je me suis bien expliqué parce que j'ai l'impression d'avoir mélanger toute les explications ^^"
Et donc , tous ça tous pour vous demander comment y procédé ? J'ai essayé plusieurs méthodes avec transform.Rotate mais rien ne ce passe comme prévue
Donc si quelqu'un pourrait bien m'aider a résoudre ce problème ça serait vraiment cool !
Le script bien sûr pour vous éclairer sur la façon dont ça marche :
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class RotateTheCameraAroundTheTarget : MonoBehaviour {
public float turnSpeed = 4.0f;
public Transform target;
public Vector3 offset;
void Start () {
}
void LateUpdate()
{
offset = Quaternion.AngleAxis (Input.GetAxis("Mouse X") * turnSpeed, Vector3.up) * offset;
transform.position = target.position + offset;
transform.LookAt(target.position);
}
}