Problème sur Roll a Ball moving player

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
OmegaTenjo
Messages : 2
Inscription : 05 Jan 2017 16:04

Problème sur Roll a Ball moving player

Message par OmegaTenjo » 05 Jan 2017 16:17

Salut à tous,

jsuis nouveau ici , du coup je me présente , j'ai 26 ans , je m'appelle Elric .
j'ai décidé de me mettre en mode autodidact a Unity dans le but de maîtriser le logiciel et de faire quelques chose de plaisant de mon temps libre.
Dans ma vie j'ai juste pu faire une année de Licence Informatique ou on as appris a codé mais en Python , pas en C ni C#.

Du coup j'installe Unity, et je me met sur le premier tuto, a savoir Roll a Ball, c'est vraiment pas facile mais je m'accroche , j'en suis à la partie ou on paramètre le script pour bouger la bouboule toute jolie , j'ai suivi le tuto en complétant le script petit a petit comme le mec fait en essayant de comprendre un peu ce que je faisais , mais j’avoue, je suis loin d'avoir tout compris ^^.

Le script étant terminé , je lance le rendu du jeu pour vérifier que le boule bouge, elle ne bouge pas ...je vais vérifié d'avoir exactement la même chose que ce que le mec à fait et oui j'ai tout pareil sauf que le 0.0f n'est pas en orange mais en noir(ligne 21) , et que sur la ligne 11 void start, le start est en bleu, ou lieu de noir ^^ .
Mis a part ça tout est pareil, pourtant je ne peux pas avancer .
Du coup après avoir passé du temps a chercher et n'ayant pas avancé ...et bien je me suis dis que j'allais quérir de l'aide xD.*

tenez petit screen de mon travail ^^
Image

De plus si de votre coté vous avez des conseils pour les débutants tel que moi, je suis preneur =) . Je continue de chercher de mon coté, si jamais je trouve avant d'avoir une réponse j'éditerais ce post.

Merci par avance =)

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

Re: Problème sur Roll a Ball moving player

Message par DevAmat » 05 Jan 2017 16:33

Salut, bienvenu a toi. alors si je ne m'abuse tu as une variable speed qui va donc déterminer ta vitesse; mais d’après ton screen dans l'inspecteur de l'éditeur sa valeur est de 0 donc tu multiplies ton vecteur directionnel par... 0, donc ton vecteur de direction final est nul et ta boule n'avance pas.
Du coups la solution est de changer la valeur de ta variable speed dans l'inspecteur.

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

Re: Problème sur Roll a Ball moving player

Message par boubouk50 » 05 Jan 2017 16:44

OmegaTenjo a écrit :Salut à tous,
jsuis nouveau ici , du coup je me présente , j'ai 26 ans , je m'appelle Elric .
j'ai décidé de me mettre en mode autodidact a Unity dans le but de maîtriser le logiciel et de faire quelques chose de plaisant de mon temps libre.
Dans ma vie j'ai juste pu faire une année de Licence Informatique ou on as appris a codé mais en Python , pas en C ni C#.
Bienvenu sur notre forum.

Passe par la section Présentation pour te présenter plutôt que sur ton post. La présentation nous permet savoir à tout moment à qui on a affaire (surtout pour le niveau de compétence qui nous permet d'adapter notre réponse)
"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

OmegaTenjo
Messages : 2
Inscription : 05 Jan 2017 16:04

Re: Problème sur Roll a Ball moving player

Message par OmegaTenjo » 05 Jan 2017 16:54

DevAmat a écrit :Salut, bienvenu a toi. alors si je ne m'abuse tu as une variable speed qui va donc déterminer ta vitesse; mais d’après ton screen dans l'inspecteur de l'éditeur sa valeur est de 0 donc tu multiplies ton vecteur directionnel par... 0, donc ton vecteur de direction final est nul et ta boule n'avance pas.
Du coups la solution est de changer la valeur de ta variable speed dans l'inspecteur.

et bien je venais de trouver la solution solo, celle que tu viens de me citer d'ailleurs x) . je me sens idiot xD .
genre c'était tellement nul, je cherchais dans le script alors que ca ne venais pas du script ^^'.

Je te remercie anyway =) !


Du coup, j'irais dans la Présentation pour me présenter =)!!!

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Problème sur Roll a Ball moving player

Message par Moi 1971 » 05 Jan 2017 18:05

OmegaTenjo a écrit : De plus si de votre coté vous avez des conseils pour les débutants tel que moi, je suis preneur =) ....Merci par avance =)
Bonjour,
Il est déconseillé de créer des variables dans les boucles (Update(), fixedUpdate()..)
Dans ton code, dans la boucle FixedUpdate() tu crées à chaque passage dans cette boucle les deux variables float qui te servent à récupérer les valeurs des "Input." Suivant la règle de la portée des variables, ces variables sont détruites dés que le "bloque de code" dans lequel elles sont créées est détruit. Imaginons que tes réglages soit de 25 fps, cela veut dire que 25 fois par seconde ton code va créer puis détruire ces deux variables. Il est préférable de créer ces deux variables dans le bloque Start() et de les réutiliser dans les Update().
Bon code ;-)

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

Re: Problème sur Roll a Ball moving player

Message par DevAmat » 06 Jan 2017 15:09

Moi 1971 a écrit :
OmegaTenjo a écrit : De plus si de votre coté vous avez des conseils pour les débutants tel que moi, je suis preneur =) ....Merci par avance =)
Bonjour,
Il est déconseillé de créer des variables dans les boucles (Update(), fixedUpdate()..)
Dans ton code, dans la boucle FixedUpdate() tu crées à chaque passage dans cette boucle les deux variables float qui te servent à récupérer les valeurs des "Input." Suivant la règle de la portée des variables, ces variables sont détruites dés que le "bloque de code" dans lequel elles sont créées est détruit. Imaginons que tes réglages soit de 25 fps, cela veut dire que 25 fois par seconde ton code va créer puis détruire ces deux variables. Il est préférable de créer ces deux variables dans le bloque Start() et de les réutiliser dans les Update().
Bon code ;-)

J'ai souvent lu l'inverse, car ceci est au mieu "une micro optimisation" donc si ces variables ne sont utilisées que dans la fonction alors pourquoi la déclarer en dehors, c'est en plus pas très lisible de ce genre de chose... De plus le compilateur va optimiser ce genre de chose non? De manière générale je ne donne pas a mes variables plus de portée qu'il leurs en faut.

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

Re: Problème sur Roll a Ball moving player

Message par boubouk50 » 06 Jan 2017 15:31

Il ne te parle de fonction au sens propre mais de boucle/fonction 'bouclante'.
Oui, il faut limiter le scope mais il ne faut pas le restreindre à trop petit.
Pour le cas des boucles (à l'intérieur d'une fonction), tu ne dois pas créer, affecter et supprimer à chaque fois une variable, c'est redondant et gourmand. Tu la déclares avant puis tu ne fais que l'affecter dans la boucle. C'est pareil pour une fonction 'bouclante' (Update, FixedUpdate, ...).
Après cela dépend de la variable. Créer et affecter un float/int c'est peu gourmand, par contre créer un GameObject qui va être affecté à l'aide d'un Find (), cela est très gourmand.

Par exemple, dans ton code (image 1e post), tu déclares le rigidBody en dehors du FixedUpdate () alors que tu aurais pu le faire dedans. Pourquoi alors ne pas faire la même chose avec les Inputs? Pourquoi passer par 2 floats au lieu d'affecter directement dans la création du Vector3? Pourquoi créer un Vector3 au lieu d'affecter directement dans le AddForce?

Je ne suis pas expert en GarbageCollector, mais il me semble que justement ce sont ces créations/destructions incessantes de variables qui créent ces allocations mémoires rapidement jusqu'à saturation.
"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 »