Comment controler la rotation d'une image 2D sur l'axe z

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Hazard4U
Messages : 4
Inscription : 03 Mars 2017 15:50

Comment controler la rotation d'une image 2D sur l'axe z

Message par Hazard4U » 10 Mars 2017 12:55

Bonjour,
Alors voilà j'aimerais créer une roulette → Image.
Je voudrais la faire tourner en fonction du nombre aléatoire que j'aurais eu. J'ai essayé d'utiliser plusieurs manières comme Lerp ou des fonctions Quaternion mais je mis prend surement mal. Je pensais utiliser une fonction comme Lerp et entrer 0 en point de départ et un calcule (2Pi + 2Pi/nbrDeCase * nbrAléatoire) en point d'arriver mais je n'ai pas réussi à faire ce que je souhaitais pouvez vous m'indiquer une fois je suis plutôt perdu :/ .
Pièces jointes
casino-roulette-vector-89664.jpg
casino-roulette-vector-89664.jpg (150.01 Kio) Consulté 3039 fois

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

Re: Comment controler la rotation d'une image 2D sur l'axe z

Message par boubouk50 » 10 Mars 2017 13:55

Pourquoi ne pas laisser faire la roulette?
Au lieu de lui imposer un nombre aléatoire sur lequel terminer, utilise-le pour la faire tourner. Ensuite, le chiffre sur lequel elle s'arrête sera le chiffre gagnant.
Ou bien c'est pour pouvoir imposer de temps en temps un nombre pas aléatoire?
"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
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: Comment controler la rotation d'une image 2D sur l'axe z

Message par evereal » 10 Mars 2017 16:44

Ton raisonnement me semble bon, j'utiliserai plutôt la fonction RotateToward plutôt que lerp par contre.
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Hazard4U
Messages : 4
Inscription : 03 Mars 2017 15:50

Re: Comment controler la rotation d'une image 2D sur l'axe z

Message par Hazard4U » 11 Mars 2017 01:19

boubouk50 a écrit :Pourquoi ne pas laisser faire la roulette?
Au lieu de lui imposer un nombre aléatoire sur lequel terminer, utilise-le pour la faire tourner. Ensuite, le chiffre sur lequel elle s'arrête sera le chiffre gagnant.
Ou bien c'est pour pouvoir imposer de temps en temps un nombre pas aléatoire?
Ou ça m'intéresse énormément mais comment déterminer sur quel chiffre elle s'arrête si on ne le contrôle pas aléatoirement ? Puis les probabilités de ce chiffre ne seront elles pas tronquées ?
evereal a écrit :Ton raisonnement me semble bon, j'utiliserai plutôt la fonction RotateToward plutôt que lerp par contre.
Très bien merci je vais me renseigner sur cette fonction :) .

Hazard4U
Messages : 4
Inscription : 03 Mars 2017 15:50

Re: Comment controler la rotation d'une image 2D sur l'axe z

Message par Hazard4U » 11 Mars 2017 05:29

J'ai donc essayé la fonction RotateToWards avec le script de base Unity:

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Transform target;
    public float speed;
    void Update() {
        float step = speed * Time.deltaTime;
        transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, step);
    }
}
Que j'ai adapté à une image, j'ai mis en cible (target) une image avec un rotation à -279° et lorsque je lance le script elle se rend bien à cette direction mais par le chemin le plus proche c'est à dire 80°. Je pense donc que cette méthode n'est pas utilisable.

:!: Les balises code SVP :!:
Merci de lire la Netiquette.

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

Re: Comment controler la rotation d'une image 2D sur l'axe z

Message par boubouk50 » 20 Mars 2017 10:39

Hazard4U a écrit :Ou ça m'intéresse énormément mais comment déterminer sur quel chiffre elle s'arrête si on ne le contrôle pas aléatoirement ? Puis les probabilités de ce chiffre ne seront elles pas tronquées ?
Justement, tu ne détermines pas sur quel chiffre tu tombes.
Dans l'idée: ta roulette doit faire (admettons) 20 tours avant de s'arrêter -> 20 x 360 = 7200°.
Ton nombre aléatoire compris entre 0 et 36 (ou 37 pour la roulette américaine) -> alea x 360/37 (ou alea x 360/38) -> une case représente 1/37e de la roue. S'arrêter sur la 12e case se traduit par faire 12 fois l'angle d'une case soit 12/37e de 360°.
Ta rotation totale vaut donc 20 x 360 + (alea x 360/37) = 360 x (20 + alea/37) (ou 38)
"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

Répondre

Revenir vers « (C#) CSharp »