rotation 360 degres

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Axel74
Messages : 100
Inscription : 23 Mai 2014 16:47
Localisation : Thonon - Lyon

Re: rotation 360 degres

Message par Axel74 » 31 Mars 2017 06:26

boubouk50 a écrit :Nope Nope Nope.
Ce n'est pas possible par cette méthode. Fais le test toi-même: mets un cube dans ta scène, ajoute lui un script avec cette ligne:

Code : Tout sélectionner

void Update () { Debug.Log (transform.localRotation.eulerAngles); }
Ensuite en Play Mode, fait tourner ton cube sur l'axe x depuis la viewport Scene et regarde les Logs consoles: LES VALEURS DES ANGLES NE SONT PAS LINEAIRES !

Non je parlais de récupérer sur un seul axe, ça récupère la valeur de l'angle sur cet axe :

Code : Tout sélectionner

	void Update () { Debug.Log (transform.localRotation.eulerAngles.y); }
Je ne pense pas qu'il ai besoin de x, y et z en une seule valeur juste pour faire un 360°, l'axe y me semblait suffisant pour cette condition.
Douille ou l'ail que pote étaux ? Yes I like.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6219
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: rotation 360 degres

Message par boubouk50 » 31 Mars 2017 09:38

Ça ne change strictement rien. C'est un test pour remarquer que cette méthode ne fonctionne que dans certains cas particuliers. Il faut que ton objet à tester soit dans certaines conditions strictes (départ rotation nulle et rotation sur un seul axe par ex) pour fonctionner. S'il est penché, et que tu le fais tourner sur l'axe Y, tu verras que x, y et z sont affectées. Tu peux donc facilement remplir la condition sans tourner de 360°.

@Zakilex: Quelles sont les conditions? Comment ton gameObject tourne-t-il? (script ou Physique?)

Je me rapprocherais de la solution de Max, de calculer la rotation à chaque frame sans passer par les angles mais par de la trigo.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: rotation 360 degres

Message par DevAmat » 31 Mars 2017 10:03

Je suis tombé sur ça:
http://www.theappguruz.com/blog/unity-r ... -90-degree

Je pense que c'est un bon moyen d'arriver a tes fins sans passer par les terribles quaternions fléaux des temps modernes (non non mes propos sont mesurés :rougefaché: ) .

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6219
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: rotation 360 degres

Message par boubouk50 » 31 Mars 2017 10:17

A chaque fois que tu opères une rotation, tu enregistres et additionne l'angle effectué. Ensuite, il te suffit de vérifier cette somme d'angles. Bon, ton code est un peu bizarre, mais ça te donne l'idée.

Code : Tout sélectionner

private float totalAngles = 0f;

void Update () {

	bool down =Input.GetKeyDown(KeyCode.Space);
	bool held =Input.GetKey(KeyCode.Space);
	bool up = Input.GetKeyUp(KeyCode.Space);

	if ( down)   // if ( Input.GetKey(KeyCode.LeftArrow) ) 
	{
		//GetComponent<Transform> ().Rotate = new Vector3 (100, 0, 0)* Time.deltaTime;	
	}
	else {
		if (held)
		{
			transform.Rotate (Vector3.left * speed * Time.deltaTime);
			Player.GetComponent<Animator> ().enabled = false;
			totalAngles -= speed * Time.deltaTime; //négatif parce que Vector3.Left.x = -1
		}
		else {
			if(up) 
			{	}
				else
			{
				transform.Rotate (Vector3.right * speedRotate * Time.deltaTime);
				totalAngles += speedRotate * Time.deltaTime; //positif parce que Vector3.Right.x = 1
			}
		}
	}
	
	//Tester la somme des angles
	if (totalAngles > 360)
		Destroy (gameObject);
}
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

zakilex
Messages : 17
Inscription : 10 Nov 2016 15:45

Re: rotation 360 degres

Message par zakilex » 04 Avr 2017 13:17

boubouk50 a écrit :
@Zakilex: Quelles sont les conditions? Comment ton gameObject tourne-t-il? (script ou Physique?)
mon objet tourne avec un script.

En fait je développe un jeu mobile, un Alto's like, mon perso est sur un velo et déboule une pente et lorsque j'appuie sur espace mon perso décolle du sol et fait une rotation en arrière ,

et si le rotation attend 360 degres , un backflip quoi, alors j'aimerai lancer un boost ou autre après ce backflip... juste pour vous expliquer un peu.

comme sur cette video :

https://www.youtube.com/watch?v=NuFiZnBatrM

mais avec ce que tu me propose (boubouk50 ) c' est une somme de degrés , il faudrait arrêter cette somme et la remettre a zero lorsque le perso retombe à terre...


parce que sinon on peu arriver a 360° sans avoir vraiment fait de 360° dans le cas de mon perso sur le velo...

je ne sais pas si je suis très claire.
Dernière édition par zakilex le 04 Avr 2017 14:14, édité 2 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6219
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: rotation 360 degres

Message par boubouk50 » 04 Avr 2017 14:07

Si c'est géré par script, alors tu as l'info puisque c’est toi qui la donne. Il te suffit simplement de récupérer les rotations successives jusqu'à ce qu'elles atteignent 360°, comme expliqué dans ma réponse précédente.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

zakilex
Messages : 17
Inscription : 10 Nov 2016 15:45

Re: rotation 360 degres

Message par zakilex » 04 Avr 2017 14:15

arf je viens de modifier mon dernier post j'ai expliquer plus en profondeur...

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6219
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: rotation 360 degres

Message par boubouk50 » 04 Avr 2017 14:49

Comment dire, soit je ne vois pas trop, soit je ne suis pas sur que ton approche soit bonne. Généralement, ces jeux se gèrent avec la physique et des forces, donc aucune transformation de rotation écrite. Les tests sont effectués pendant un saut (des tests sont déjà en place: isGrounded). De là, si ton jeu est en vue de côté, tu peux très facilement déterminer la rotation (puisqu'elle ne suit qu'un unique axe).
La résolution de ton problème ne réside que dans l'approche que tu mets en place. Et pour le coup, je ne suis pas sûr de ce que tu veux faire (au delà de la résolution de la rotation).
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

zakilex
Messages : 17
Inscription : 10 Nov 2016 15:45

Re: rotation 360 degres

Message par zakilex » 05 Avr 2017 13:37

Bon , merci à tous pour vos propositions je vais essayé de creuser tout cela, je reviendrai dessus plus tard avec plus de clarté dans ma demande.

merci.

Alexis.

Répondre

Revenir vers « Scripting »