Split et mise à jour position

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Riblito
Messages : 46
Inscription : 10 Juin 2022 11:32

Split et mise à jour position

Message par Riblito » 02 Jan 2023 13:30

Bonjour

j'ai encore besoin d'aide ..... décidement :pleur4:

j'ai besoin de découper des coordonnées pour mettre à jour la position du jour

j'ai donc tenté cela :

Code : Tout sélectionner

                
                if (s[0].StartsWith("(") && s[0].EndsWith(")"))
                {
                    s[0] = s[0].Substring(1, s[0].Length - 2);
                }
                
                string[] sArray = s[0].Split(',');

                Vector3 Coord = new Vector3(
             float.Parse(sArray[0]),
             float.Parse(sArray[1]),
             float.Parse(sArray[2]));

                GameObjectPlayer.transform.position += Coord;
                
Il faut savoir que "s[0]" contient les coordonnées en string...
exemple : (-11.0, 1.0, 0.0)

donc j'ai trouvé sur le net comment faire mais impossible de mettre à jour le script, la partie "transform.position" fonctionne car avec des valeurs en brute c'est good ... j'ai l'impression que cela vient du sArray ? non ?

merci de vos retour

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

Re: Split et mise à jour position

Message par Max » 02 Jan 2023 15:58

Bonjour,

à la base, chez nous les nombres à virgule sont notés avec des virgules et non des points
(d'où le nom nombre à virgule :mrgreen: ). L'erreur doit probablement venir de là.
Si tu veux que cela fonctionne avec des points (comme les notations rencontrées dans les scripts) alors ajoute dans ta fonction parse en argument CultureInfo.InvariantCulture.
Donc:

Code : Tout sélectionner

        Vector3 Coord = new Vector3( 
            float.Parse(sArray[0], CultureInfo.InvariantCulture),  
            float.Parse(sArray[1], CultureInfo.InvariantCulture),
            float.Parse(sArray[2], CultureInfo.InvariantCulture));
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

Riblito
Messages : 46
Inscription : 10 Juin 2022 11:32

Re: Split et mise à jour position

Message par Riblito » 02 Jan 2023 16:17

cela fonctionne, je connaissais pas merci pour l'explication

... par contre j'ai un autre soucis, le joueur doit arriver en (-21.1, 1.0, 0.0) et cela est validé car j'ai affiché les coordonnées en string dans un Text et elles sont bien bonnes .... mais pourtant le joueur arrive en (-31.1, 1.0, 0.0)....
Problème dans le code indiqué ou autre chose ? ... ca me rend fou cette histoire :merci:

édit : j'ai rien dit, cela vient du string avant le Split .... plus qu'à résoudre la nouvelle énigme haha

edit 2 : ben franchement je viens de faire les tests ... coordonnées en string avant les modifications : (-18.4, 1.0, 0.0)
après avoir retiré les ( ) ... -18.4, 1.0, 0.0
après le split et avoir été appliqué au joueur ... -28.4 1.0, 0.0

cela rajoute 10 à chaque fois je comprends pas du tout pourquoi

Riblito
Messages : 46
Inscription : 10 Juin 2022 11:32

Re: Split et mise à jour position

Message par Riblito » 02 Jan 2023 17:46

alors bah j'ai trouvé .... en faite le joueur est de base placé à -10, 1, 0

donc j'ai l'impression que ca fait une soustraction quand je mets à jour la position avec le vector3 ....
pourtant ça doit juste remplacer non ?????

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

Re: Split et mise à jour position

Message par Max » 02 Jan 2023 18:03

ben non, quand tu écris GameObjectPlayer.transform.position += Coord; tu ajoutes bien à la position actuelle la valeur de Coord (avec le += ).
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 « Scripting »