[RESOLU]Rotation caméra dans un fixed update

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
sennin
Messages : 19
Inscription : 03 Fév 2010 17:17

[RESOLU]Rotation caméra dans un fixed update

Message par sennin » 19 Mai 2010 15:56

Bonjour,

je suis actuellement en train de réaliser un script qui me permet d'avoir une minimap dans mon application Unity, avec une caméra Orthographic bloquée en vue du dessus (pour avoir une vision globale de ma map).

J'ai déjà codé plusieurs options, comme la gestion du zoom, ou encore le fait que ma caméra reste figée sur mon player pour le suivre dans son déplacement, ainsi qu'une gestion de la téléportation grâce au clic de la souris.

Mon problème est le suivant : je voudrais que ma caméra orthographic, en plus de suivre mon player dans son déplacement, ait également la même rotation (du genre : mon player effectue une rotation de 90 degrès sur la droite, donc ma caméra en fait de même ). Pour que la minimap soit toujours dans le sens de vision de mon player.

Voici mon code pour le moment :

Code : Tout sélectionner

	void FixedUpdate() {
		Minimap = GameObject.Find("Minimap");
		if (Minimap) {axes = Minimap.GetComponent(typeof(Transform)) as Transform;}
		local = GameObject.Find("LocalPlayer");
		if (local) {axeslocal = local.GetComponent(typeof(Transform)) as Transform;}
		vect = new Vector3(axeslocal.position.x, axes.position.y, axeslocal.position.z);
		axes.position = vect;
		axes.Rotate(axeslocal.rotation.x, axeslocal.rotation.y - axes.rotation.y, axeslocal.localEulerAngles.z, Space.World);		
	}
Le problème c'est que dès que j'effectue une rotation avec mon player, ma caméra rotate à l'infinie, je pensais pourtant qu'en passant en paramètre "axeslocal.rotation.y - axes.rotation.y" a Rotate, il finirait par faire une rotation de 0 sur l'axe des y lorsque ma caméra arriverait sur le même axe de rotation que mon player ce qui stopperait la rotation, mais ce n'est pas le cas...

Une idée lumineuse? :D

EDIT : J'ai oublié de précisé que je programme en c#

EDIT2 : Problème réglé en faisant tout simplement ça :

Code : Tout sélectionner

	void FixedUpdate() {
		Minimap = GameObject.Find("Minimap");
		if (Minimap) {axes = Minimap.GetComponent(typeof(Transform)) as Transform;}
		local = GameObject.Find("LocalPlayer");
		if (local) {axeslocal = local.GetComponent(typeof(Transform)) as Transform;}
		vect = new Vector3(axeslocal.position.x, axes.position.y, axeslocal.position.z);
		axes.position = vect;
		axes.rotation = axeslocal.rotation;
		axes.Rotate(90, 0, 0);
	}

Répondre

Revenir vers « Scripting »