[DB-AL] Appliquer une rotation d'un object par rapport au curseur

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
FriteCoca
Messages : 17
Inscription : 16 Mai 2018 13:39

[DB-AL] Appliquer une rotation d'un object par rapport au curseur

Message par FriteCoca » 15 Sep 2018 12:53

Bonjour,

J'ai fais un script pour appliquer une rotation selon la position de mon curseur. J'ai envie de reproduire l'effet du double curseur. ( Avoir un curseur central qui ne bouge pas et un autre qu'on peut déplacer. Quand je déplace la souris, le curseur central vient rejoindre le curseur déplaçable en faisant faire une rotation à mon gameobjects. )

Noir = curseur central
Rogue = curseur déplacable

Image

J'ai essayé avec mon script de récupérer la différence entre les valeur x et y du vaisseaux et du curseur via WorldToScreenPoint mais rien n'y fait. Quand j'essaye d'appliquer ces valeur pour corriger la position du vaisseau ça part en vrille

Code : Tout sélectionner

Vector3 screenPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
            cursor.position = screenPos;

            Vector3 worldScreen = Camera.main.WorldToScreenPoint(transform.position);

            float yDist = worldScreen.y - cursor.position.y;
            float xDist = worldScreen.x - cursor.position.x;


            float mousexRot = mouseX * shipTurnSpeed;
            float mouseyRot = mouseY * shipTurnSpeed;

            Vector3 rot = transform.rotation.eulerAngles;

            rot.x -= mouseyRot;
            rot.y += mousexRot;

            transform.rotation = Quaternion.Euler(rot);

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Appliquer une rotation d'un object par rapport au curseur

Message par Max » 15 Sep 2018 17:34

Bonjour,

En parcourant ton code rapidement, cela ne semble pas incohérent. Mais un bout de code ne permet pas toujours de se faire une idée d'ensemble malheureusement.
C'est quoi mouseX et mouseY par exemple ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

FriteCoca
Messages : 17
Inscription : 16 Mai 2018 13:39

Re: [DB-AL] Appliquer une rotation d'un object par rapport au curseur

Message par FriteCoca » 15 Sep 2018 20:22

Elles représentent :

Code : Tout sélectionner

Input.GetAxis("Mouse X")
et

Code : Tout sélectionner

Input.GetAxis("Mouse Y")

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Appliquer une rotation d'un object par rapport au curseur

Message par Max » 16 Sep 2018 10:43

Hello,

ton bout de code comporte deux choses différentes visiblement.
Pour ce qui est de la gestion du ton gameobject par la souris, je dirais que c'est pas mal.
Par contre niveau script, je ne comprends pas trop ce que tu cherches à faire avec le transform 'cursor', même si j'ai bien en tête ce que tu expliques plus haut concernant l'effet recherché. C'est le transform de quoi cursor, un sprite, un élément UI ? Dans la partie code que tu fournis, xDist et yDist sont calculées mais tu les emploies comment par la suite ?
Si c'est un UI par exemple, et que tu souhaites le ramener vers le centre écran, c'est lié au proportions de ton screen fournis par exemple par Screen (genre width/2, etc...).
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « (C#) CSharp »