Créer un jeu en 2D facilement avec Unity (#2 : Déplacements du joueur)
Вставка
- Опубліковано 28 лют 2020
- Bienvenue sur le deuxième épisode de la série ! Aujourd'hui on ajoute notre joueur ainsi que son système de déplacement.
🚨🚨🚨🚨 LIRE Ci-DESSOUS AVANT DE POSTER UN COMMENTAIRE 🚨🚨🚨🚨
🚨 FAQ / PROBLÈMES DE L'EPISODE 🚨
Q : J'ai toujours des espaces / anomalies entre mes tiles (comme ici : imgur.com/a/OodFf1d ) malgré la correction proposée à 14:54
R : Cela est sans doute dû à une valeur trop basse appliquée au "Cell Gap" à 14:54. Il serait préférable d'utiliser une valeur moins basse. Je recommande 0.001 ou 0.01
Q : Je n'ai pas visual studio comme à 9:15 !
R : Il vous faudra forcément un IDE pour rédiger les scripts. Vous pouvez installer Visual Studio durant l'installation de Unity. Tout est expliqué dans cette vidéo : • Télécharger et install...
Q : Mon saut ne fonctionne pas tout le temps.
R : C'est normal, nous retravailleront le système de saut dans quelques épisodes.
Q : Malgré l'ajout des ground check, mon personnage peut toujours sauter à l'infini.
R : Ce n'est pas grave et vous pouvez passer à la suite. Le système de saut est modifié un peu plus tard.
Q : Le joueur reste accroché aux parois / obstacles de ma scène
R : C'est normal, nous y reviendrons ultérieurement.
Q : J'ai le même code mais ça ne fonctionne pas chez moi !
R : Eh bien non, c'est que votre code n'est forcément pas le même ou que vous avez raté une étape sur le logiciel. Regardez attentivement !
Q : Je fais le script avec Visual Studio mais je n'ai pas les couleurs ou elles sont différentes, est-ce normal ?
R : C'est que Visual Studio n'est pas lié à Unity. Cela se remarque si les noms de classe spécifiques ne sont pas reconnues (Pas de couleurs sur Transform, Rigidbody2D, etc.). Pour corriger ce problème, regardez la dernière section de cette vidéo : • Télécharger et install...
---------------------------------------------------------------
🖼️ Tilesheet / Tilemap utilisée : opengameart.org/content/a-pla...
☕ Soutenir la chaîne ☕
➡️ sur Tipeee : www.tipeee.com/tuto-unity-fr
➡️ sur uTip : utip.io/tutounityfr
🎓 Apprendre le C# pour Unity : • Apprendre le C# - Épis...
📥 Télécharger le projet de la série : github.com/TUTOUNITYFR/creer-...
🎵 Musique d'accéléré :
Kevin MacLeod - Twisting
····················································································
Version Unity de la vidéo: Unity 2019.2 (Version personnelle)
····················································································
💻 Site internet : www.tutounity.fr
👉 Twitter : / tutounityfr
👉 Facebook : / tutounityfr
👉 Discord : www.tutounity.fr/discord
⚗️ Chaîne secondaire (ZEF LAB) : / @zeflab
📅 Planning des vidéos à venir : www.tutounity.fr/videos-a-ven...
····················································································
Merci de bien vouloir respecter les autres utilisateurs dans la section des commentaires et de signaler ou d'ignorer les commentaires irrespectueux.
····················································································
Télécharger Unity (toutes versions):
unity3d.com/get-unity/downloa...
Super tutoriel ! Par contre, j'ai dû faire face à un problème assez gênant, le saut ne fonctionnait pas toujours. Pour corriger cela, j'ai dû mettre la détection du jump dans la méthode Update() et non FixedUpdate(). J'ai vu que d'autres ont eu le souci, j'espère que ça aidera les prochains qui rencontreront ce problème ^^
void Update ()
{
if (Input.GetButtonDown("Jump") && isGrounded)
{
isJumping = true;
}
}
un peu que ça m'aide merciiiiii
Merci pour le conseil ... mais par contre il faut créer un nouveau void fixedupdate qui prend que les mouvements (droite , gauche) car si on met tout dans un void update notre personnage sera rafraichi tres lentement ce qui va le rendre tres lent .
salut tu sait pourquoi il n'y a pas la case pour mettre le rigidbody et le movespeed comme a 24:00 ?
@@cecyled6541 désolé ça fait longtemps, je ne m'en rappelle plus ☹
Merci pour ton aide :) j'avais exactement ce problème
J'aime bien à la fin quand il dit: vous voyez en quelques heures on à bien avancé sur notre projet.
ça m'a pris 4 jours pour comprendre mes erreurs^^
moi aussi mdrr.
J'ai une erreur que je l'ai pas compris 😂😂😂😂 mdr
Moi aussi j'avais des erreur mais mon personnage devient se déplacer ça m'a fait une heure
MDR ! ! Tu a mis 4heures à l'époque de ton commentaire mais je suis certains qu'aujourd'hui tu a multiplié par 10 la rapidité a laquelle tu travail ;-)
@@scorpio3695 je me remet dedans c'est fou comme c'est passionant encore plus en 2021, ça fait 5 an que j'ai laché le pc je l'ai repris pour jouer, j'ai joué 1h j'ai recommencer la prog
Ta chaine est une mine d'or
entièrement d'accord
Exactement
Clairement
Best comment.
Je suis totalement d’accord
14:26 Ca surement été déjà dit, mais au cas où pour corriger les traits blanc entre les tiles, la solution c'est de désactivé l'anti aliasing sur Untiy ( En cliquant sur "Project settings", puis sur "Quality" il y a une option pour choisir la qualité de l'antialiasing, il faut la mettre sur "disabled" )
Génial c'est vraiment de la qualité continue comme ça, ne change rien!
Bonjour tous le monde,
Suite a plusieurs commentaire qui parle d'une bug sur le jump qui ne s'effectue pas ou qui s'effectue 1fois sur 30 j'ai plusieurs solution pour vous:
Solution numéro 1;
Mettre la détection de saut dans une fonction Update() et de laisser le déplacement horizontal dans FixedUpdate()
Si cela ne marche pas effacé les ajouts ajouté et faite la solution 2
Solution numéro 2;
Dans le script ligne 24 vous avez la commande if (Input.GetButtonDown("Jump") ....., il vous suffi d'enlever la down est d'enregistré.
Pour moi la deuxième solution a marché plus de problème en vue pour le moment ^^
Bonne journée a vous et bon codage
Pour ce qui on l'erreur de "The références script (Unknown) on this Behaviour is missing! " vous avez créé un script et que vous aviez attaché au préfabriqué, mais si vous l'avais effacé plus tard, alors Unity dira que ce script (en dehors de celui publié dans le fil) manquait.
Sinon bin quand j'avais ces erreur je redémarre Unity sa marche :)
Merci beaucoup ! 👍
la solution numéro 2 a bien fonctionner il suffisait juste d'enlever le down et ca devient ; if(Input.GetButton("Jump") && isGrounded)
je date un peu mdr mais au script ligne 24 g rien moi enfin il y a rien ecrit
@@branco_6906 Moi aussi je date et en fait c'est pas forcément dans la ligne 24 que c'est écrit hein tu cherches juste le if(Input.GetButtonDown("Jump")
maiq du coup on peut allez ultra haut et c chi**
Good job! I finally appreciate my French classes
Glad to hear that ! Welcome !
Yes me too my brother
Merci infiniment t'es tutoriels sont d'une grande qualités, simple a suivre et très instructif c'est top !
Je ne suis qu'a la 2eme vidéo et je peux déjà me permettre de te féliciter pour ton travail !! Tes explications sont clairs, tu essaye d'englober les différentes problématiques que l'on pourrait rencontrer et tu nous offre ton expérience à titre gratuit !! Bravo à toi et respect pour ton état d'esprit ! Je m'abonne et likerai chacune de tes vidéos pour ton référencement ;-)
j'ai regardé l'intro et le 1 er épisode l'idée des timemap est génial c'est si facile maintenant il faut un peu coder tout ça j'ai hate que tu nous montre comment utiliser les animation (car je n'arrive pas à mettre plusieurs animations sur un characters en 3d je suis obliger de le désactiver / activer ) en attendant je vais faire un tour sur UTIP :)
Super vidéo
Pour ceux qui sont isGrounded en permanence, il faut faire attention à ce que les points soient en dehors du box collider du joueur.
J'ai fait l'erreur et pendant 1h je n'ai pas compris pourquoi la case restait cochée. Il faut juste sortir les GroundCheckers en dehors du box collider.
merci beaucoup
Merci beaucoup
cet homme est un génie
Parfait, deuxième étape passée, je regarde en parallèle ta série sur le C# parce que je ne comprends absolument rien au programme hormis le côté "logique".. Super encore une fois, gros travail.
ca fait du bien de voir quelqu'un qui s'y connait et qui respecte les conventions de base . Merci pour tes videos j'apprend beaucoup avec toi .
LE meilleur youtubeur français sur les cours Unity, tu es un EXCELLENT pédagogue, mille merci !
Grand merci à toi tu nous aide beaucoup, moi, mon pote et toutes les personnes qui regarde tes vidéos merci de nous offrir cela
Mec j’adore ta série grâce à toi j’arrive à crée mes propres jeux 😉
Tout d'abord félicitations pour le tuto il est vraiment super pour les débutants ! Dès que j'aurais donné ma première formation Unity, hop un teepee direct pour toi !
Dans les conventions de nommage, *seules* les variables private doivent commencer par un "_" et les variables locales + paramètres ne doivent *jamais* commencer par un "_".
Le problème de collision qui est résolu en ajoutant un Circle collider ne résoudra pas vraiment le problème. Pour s'en rendre compte, il suffit de mettre une grande vitesse et de faire des aller-retour sur la plateforme : à un moment donné, le déplacement va "toucher" un bord invisible et le personnage va sauter un peu (et si on peut aller très vite, il va sauter encore plus...). En fait le vrai problème de fond c'est que Unity calcul mal le "TileMap collider 2d". Pour résoudre le problème entièrement :
- il faut sur la Grid "Fondation", mettre un "Polygon Collider 2D" et l'éditer à la main, de manière à avoir une ligne droite
. Ajouter autant de "Polygon Collider 2D" que nécessaire pour chaque plateforme. C'est long, mais le résultat en vaut largement la chandelle
- pour aller au bout, il suffit, pour le joueur, de ne pas mettre de sphere collider, mais pour le Box Collider 2D, de changer la taille du collider, de la réduire pas mal et de mettre un grand "edge radius", comme ça, ça arrondira les bords et même près d'une falaise, le joueur s'il est sur le bord, glissera doucement et tombera, sans ligne de code supplémentaire !
Ce ne doit pas être Input.GetAxis("Horizontal") * moveSpeed * Time.DeltaTime; mais fixedDeltaTime (vu qu'on est dans FixedUpdate());
Et il faudrait surtout préciser que ce n'est pas une bonne pratique, c'est juste pour tester...
La bonne pratique est de regarder les Input dans Update() et s'il y a une "demande" de mouvement, s'en souvenir (ex : moveRight = true) puis, dans FixedUpdate(), tester ces variables (if (moveRight) {...} >>> surtout pas tester en direct dans FixedUpdate() c'est pas fait pour ça, et à l'inverse même chose, dans Update(), ne pas travailler sur la physique, c'est pour ça que FixedUpdate a été crée).
Tu m'as bcp aidé pour le problème de collision merci
Bonjour,
J'ai beau suivre vos conseils pour Time.DeltaTime mais ça ne fonctionne toujours pas...
J'ai essayé :
float horizontalMovement = Input.GetAxis("Horizontal") * moveSpeed * fixedDetlaTime;
float horizontalMovement = Input.GetAxis("Horizontal") * moveSpeed * Time.fixedDetlaTime;
float horizontalMovement = Input.GetAxis("Horizontal") * moveSpeed * Time.detlaTime;
Rien ne fonctionne...
C'est pourtant ici que Unity m'indique une erreur ?
Assets\Script\PlayerMovement.cs(14,83): error CS0117: 'Time' does not contain a definition for 'detlaTime' quand je mets le script du tuto (Time.detlaTime;)
Assets\Script\PlayerMovement.cs(14,83): error CS0117: 'Time' does not contain a definition for 'fixedDetlaTime' avec Time.fixedDetlaTime;
Et Assets\Script\PlayerMovement.cs(14,78): error CS0103: The name 'fixedDetlaTime' does not exist in the current context avec fixedDetlaTime;
Une idée ?
Merci d'avance
@@SonoxStudio Salut, tu écris detla au lieu de delta
@@clementfelix8231 oui j'ai vu merci ^^
tout est dicté parfaitement c'est très facile et compréhensible merci !
ta vu sa chakal ta dead sa
Ton tuto mec il est vraiment trop bien tu devrais avoir beaucoup plus d'abonnés ^^
Bonjour, bravo pour cette vidéo, j'adore et je débute complètement aussi bien en programmation que sur la création de jeux vidéo. j'avais appris un peu le BASIC sur Amstrad CPC dans les années 80 mais cela me sert à tien. il me faut une journée pour chaque épisode lol. j’espère qu'il y aura d'autres.
Franchement cette série est super continue
C PAYANT UNITY?
@@petitpapanoel1969 Non la version perso non
@@cyrian120 OK mrc
Oui
@@petitpapanoel1969 non
Bien content de savoir que je suis pas le seul à avoir ce genre de problèmes à ajouter des morceaux de map sur la mauvaise tilemap je me sentais très stupide en pensant que j'étais le seul à être comme ça ^^' Superbe tutos et merci de partager ton expérience gratuitement comme ça !
L'interface de sélection n'est pas très intuitif, c'est écrit sur quel map tu es actuellement mais trop discret à mon goût :)
Franchement j'ai maté les deux premiers épisodes et je n'ai eu aucun soucis, c'est super bien expliqué et ça va suffisamment vite pour ne pas s'ennuyer! J'avais commencé par regarder Brackeys mais ses tutos n'était pas assez fournis dans certains points. congrats!!
Mec tu sais pourquoi quand je note
"Public Rigidbody2D rb;"
Le rigidbody n'est pas en vert ni dans mes propositions ?
@@hasdrubal814 Comment je trouve ça stp ?
J'ai essayé de suivre tes étapes et c'est vraiment géniale
Jai mit le script identique mais il unity dit qu'il y a une erreur
Merci beaucoup pour cette série très claire !
tah netflix
Merci beaucoup pour cet excellent tutoriel, et merci aux commentaires qui aident à résoudre les problèmes !
t'es le meilleur merci pour tes vidéos si complètes !!!
Hello, petit commentaire pour préciser le "petit gap" qui apparait parfois entre les tiles
Meme si le projet Unity est en 2D, l'Anti-Aliasing est toujours présent, et c'est ce qui cause le problème de gap. Pour le désactiver et éviter ce problème, faut Edit > Project Settings > Quality > Anti-Aliasing > Disabled
En espérant que ça puisse en aider certain.e.s :)
Personnellement il est bien désactivé et ça ne change rien (dommage parce que ça aurait changé ma vie)
@@lecoinducanap2742 L'antialiasing est peut etre forcé via le pilote de la carte graphique, je sais pas pour amd pour pour les nvidia c'est dans le panneau de configuration nvidia.
Coucou
tu as regler mon problème merci :)
Ca m'a grave aidé, merci beaucoup
🚨🚨🚨🚨 *LIRE AVANT DE POSTER UN COMMENTAIRE* 🚨🚨🚨🚨
🚨 FAQ / PROBLÈMES DE L'EPISODE 🚨
*Q* : J'ai toujours des espaces / anomalies entre mes tiles (comme ici : imgur.com/a/OodFf1d ) malgré la correction proposée à 14:54
*R* : Cela est sans doute dû à une valeur trop basse appliquée au "Cell Gap" à 14:54. Il serait préférable d'utiliser une valeur moins basse. Je recommande 0.001 ou 0.01
*Q* : Je n'ai pas visual studio comme à 9:15 !
*R* : Il vous faudra forcément un IDE pour rédiger les scripts. Vous pouvez installer Visual Studio durant l'installation de Unity. Tout est expliqué dans cette vidéo : ua-cam.com/video/sKUSt4YQkIk/v-deo.html
*Q* : Mon saut ne fonctionne pas tout le temps.
*R* : C'est normal, nous retravailleront le système de saut dans quelques épisodes.
*Q* : Malgré l'ajout des ground check, mon personnage peut toujours sauter à l'infini.
*R* : Ce n'est pas grave et vous pouvez passer à la suite. Le système de saut est modifié un peu plus tard.
*Q* : Le joueur reste accroché aux parois / obstacles de ma scène
*R* : C'est normal, nous y reviendrons ultérieurement.
*Q* : J'ai le même code mais ça ne fonctionne pas chez moi !
*R* : Eh bien non, c'est que votre code n'est forcément pas le même ou que vous avez raté une étape sur le logiciel. Regardez attentivement !
*Q* : Je fais le script avec Visual Studio mais je n'ai pas les couleurs ou elles sont différentes, est-ce normal ?
*R* : C'est que Visual Studio n'est pas lié à Unity. Cela se remarque si les noms de classe spécifiques ne sont pas reconnues (Pas de couleurs sur Transform, Rigidbody2D, etc.). Pour corriger ce problème, regardez la dernière section de cette vidéo : ua-cam.com/video/sKUSt4YQkIk/v-deo.html
Ce commentaire sera mis à jour selon les questions / problèmes récurrents. En cas de besoin, le projet complet est disponible sur GitHub (lien en description).
j'ai rigidbody2d qui s'affiche pas en vert :/
@@HEAVYSHITIN J'utilise Unity avec la configuration par défaut et c'est tout. Visual Studio a été installé automatiquement par Unity et je n'ai rien modifié aux paramètres.
@@HEAVYSHITIN Tu n'as pas choisi/paramétré ou installé Visual Studio 2019 avec Unity Hub, ça se voit si les noms de classe spécifiques à Unity ne sont pas reconnues (EX: Transform, Rigidbody2D), ci-après la doc : docs.microsoft.com/fr-fr/visualstudio/cross-platform/getting-started-with-visual-studio-tools-for-unity?view=vs-2019
Tu as fait des erreurs d’inattention, je t'invite à resuivre la vidéo attentivement.
Nous sommes dans un projet 2D, nos colliders sont donc des colliders 2D.
C'est un SphereCollider2D qu'on ajoute pas un simple SphereCollider.
@@TUTOUNITYFR Apparemment, j'ai le même soucis, mais j'ai réussi à le corriger en changeant "fixedUpdate" par "Update". Tu sais d’où provient ce comportement ?
Merci pour vos vidéos ils me sont très utile j’étais perdu ça m’aide beaucoup 🙏🏻🙏🏻🙏🏻😊
C'est super bien expliqué, cette série de tuto est méga cool mais l'attente jusqu'a la prochaine vidéo est trop long :/ Sinon tu comptes y ajouter les render pipeline qu'Unity offre ? Je les ai ajouté à mon projet et ça ajoute vraiment quelque chose. C'est fou que juste des shaders et du post processing peuvent tout changer
Merci beaucoup en seulement 2 heures j'ai un décor et en plus mon personnage se déplace et saute, continue comme ça
ta l'air d'avoir réussi tu peut m'envoyer le scripts stp ? x)
juste ctrl+c , ctrl+v
problème réglé j'ai mis fixedUpdate à la place de FixedUpdate
@@Izzea hey, bravo si tu as réussi 👏🏼
@@_kaeso_2026 Merci 👍
Mec tu sais pourquoi quand je note
"Public Rigidbody2D rb;"
Le rigidbody n'est pas en vert ni dans mes propositions ?
POUR CEUX QUI ONT LE PROBLEME DE SAUT QUI NE S'EFFECTUE PAS TOUJOURS :
Il suffit de mettre cette ligne de code tout en enlevant l'appel du saut dans le "void FixedUpdate"
void Update()
{
if (Input.GetButtonDown("Jump"))
{
isJumping = true;
}
}
ca a pas marcher
@Adri1_2a vous faites comme dans la vidéo mais au lieu de mettre dans fixed update vous mettez dans update
Ah non je te rassure le temps est parfait (38.22). Elles sont super tes videos ca donnent envie de faire comme toi. a plus !
Grace a toi le plus dur est fait. On a juste à pratiquer pour que ca rentre, merci ^^
Merci à toi, super tuto !
par contre j'ai de gros soucis avec le saut. En effet avec la méthode "fixedUpdate" l'input jump n'est pas bien récupéré.
J'ai passé la récupération de l'input "Jump" sur la méthode "update" et tout fonctionne niquel !
Merci je comprenais pas d'où venait le problème.
pareil ici, merci !
POUR CEUX QUI ONT DES ERREURS AU CODAGE ; vérifier bien
1)les miniscules et majuscules
2)les caractères comme ; à la fin d'une ligne ou les " "
3)les espaces
j'espère avoir pu vous aider 😉👍
salut tu sait pourquoi il n'y a pas la case pour mettre le rigidbody et le movespeed comme a 24:00 ?
@@cecyled6541 j'ai le meme probleme je crois que c'est un probleme de nom ... tu sais au momne tou il change le nom de son projet
se sont les meilleures tutos parce qu'ils sont grave complet
un grand gg pour le taff et l'Energie que tu y met
Salut j'estime que t'es déjà a l'épisode 12n'est ce pas?Moi je suis toujours piègé ici
@@ick-xt5xm pas vraiment mais je connais certains trucs. Je regarde juste quand j'ai des doutes ou que je sais pas.
@@TheK94 Ah d'accord ! moi c'est ma première fois en fait mais maintenant c'est bon je progresse linéairement
Bonjour,
Tout d'abord merci pour tes vidéos claire et bien expliqué.
Petite précision :
On peut mettre
if (isJumping)
{
rb.AddForce(new Vector2(0f, jumpForce));
isJumping = false;
}
Au lieu de
if (isJumping == true)
Vue que isJumping est un booléen.
on peut, mais ça ne change rien et puis pour la lisibilité du code, quelqu'un qui jette un oeil sur ton code comprend plus rapidement ce qu'il fait
Bonjour, au cas ou quelqu'un passerait par la avec une solution, il m'est impossible d'utiliser la Classe MonoBehaviour malgrés le "Using UnityEngine".
edit :Bah j'ai trouvé. Voici la soluce:
Aller sur l'éditeur Unity. Cliquer sur Edit / Preferences / External Tools. Tout en haut il y'a External Script Editor qui est par défaut sur : Openbyfile extension.
Choisissez à la place Microsoft Visual Studio. Ensuite cochez toutes les cases. J'ai appuyé sur Regenerate project files (Mais pas sur que ce soit nécessaire).
Vous pouvez maintenant réouvrir votre script avec visual studio. Attendez un peu et normalement ce sera bon (Le MonoBehaviour prendra la couleur des "classes").
Bonjour, un grand merci pour cette vidéo qui m'a permis de faire un énorme bond dans Unity, étant totalement novice. J'ai seulement des notions de programmations.
Mais pourquoi le personnage ne répond pas toujours au bouton de saut (barre d'espace)? Je suis obligé d'insister plusieurs fois pour le faire sauter.
Et pourquoi mes gizmos de GroundCheckLeft et GroundCheckRight sont encore visibles dans le jeu?
Merci mille fois, toutes les explications sont limpides.
J'ai le même problème je sais pas pk ça fait ça..
Jadoooooooore ! Tu m'as fait adoré la programmation !
Superbe série, bravo a TUTO UNITY FR!!!
il a dead sa
Yo ! J'ai une petite question, pourquoi ne pas directement checker si le CircleColliser rentre en colision avec la TilemapColliser ? Merci :D
tu n'aura jamais t'a réponse ;)
@@julesgreveldinger :(
Salut, est ce que tu as mis à disposition quelque part les scripts ?
Je débute donc je recopie ( en comprenant partiellement ) le code
Je sais il est mieux de se former en code avant mais ça m'ennui j'ai besoin de pratiquer et apprendre en même temps pour progresser
Quoiqu'il en soit mille merci c'est très clair à chaque fois :)
Nassim Betrouni moi aussi je fais la même chose que toi mais j’ai un peu étudié sur le sujet avant de commencer
J ai un problème a un moment il mais sa × mais je ne le trouve pas sur mon clavier même avc les alt+ etc...
@@qar-tartinee7541 c'est ca *
Ha moi j'ai 12😂😅
Le projet complet est sur GitHub, le lien est en description.
sache que je t'aime je débute donc cela m'aide bcp
merci monsieur pour vos précieux guides
Bonjour,
d'abords, merci et félicitations pour cette série de tuto ! J'ai 2 remarques, on ne sait jamais ca peut aider d'autres personnes qui ont eu des problèmes de mouvement :
-Mon personnage ne bougeait pas... j'ai fini par remarquer que dans Unity, mon rigid body n'était plus associé à la variable Rb.
-Toujours dans Unity, dans l'onglet Script de l'Inspector, on voit apparaitre "Move Speed" et "Rb". C'est bien issu des variables "public" créées dans la class, mais en changeant légèrement l'orthographe !!! : Sous Unity, la première lettre est forcée en majuscule, et un espace est ajouté avant une majuscule qui est précédé d'une minuscule dans le nom de la variable d'origine. Perso, maintenant que je l'ai compris, je me sens mieux.... ;o)
Tu m’as sauvé 👍
Salut, tu pourrais expliquer comment on réassocie s'il te plaît car là je suis perdu 😅
Salut je sais que ca fait 2ans mais si tu sais encore j'aurais besoin d'aide 😅
@@kay_legend2005 pour associer tu glisses le rigibody plus haut dans les components sur la variable du script (jsp si c'est clair), et la deuxième partie c'est juste que Unity reformate ton texte (1ere lettre en majuscule, espace devant chaque maj etc)
14:20 pour moi l’espace entre les tiles est du au filtre
je l'ai corrigé en mettant no filter
Tu as etait ou pour le no filter
Superbe tuto j'apprend super bien et ça n'as pas vieilli !
Bonjour, très bonne vidéo comme à chaque fois. Je ne suis pas familier de la 2D et des Tiles, j'apprécie toujours d'apprendre de nouvelles choses, comme par exemple régler le problème d'interstice entre les tiles.
Quelques questions et remarques sur le script PlayerMovement.cs :
- à la ligne 36 (numéro de ligne du script dans GitHub), la condition (isJumping == true) devrait être plutôt (isJumping). D'ailleurs, à la ligne 23, tu utilises isGrounded.
- je trouve bien que dans un tuto pour débutant, tu prennes le temps de revenir sur les variables publiques afin de les passer en private. Personnellement, je vais plus loin en passant toutes les variables en [[SerializeField] private, et je ne passe en public que si nécessaire (et encore, j'utilise souvent une propriété avec un setter private).
- c'est vrai que 38 minutes ça commence à faire long, mais je n'ai pas vu le temps passer ^^
Encore bravo.
Hello ! Merci beaucoup pour ton commentaire, le (isJumping == true) est très probablement une faute d’inattention et sera corrigé lors de mon prochain enregistrement. Je suis entièrement d'accord sur les publics / private qu'il faut passer en SerializedField, je crois l'avoir dit dans le rush initial mais coupé au montage de cet épisode car je ne voulais pas "chambouler" l'organisation du script surtout éviter une incompréhension aux débutants. Quoi qu'il en soit j'ai prévu un épisode de refacto afin de nettoyer le code, ca sera traité à ce moment là :)
@@TUTOUNITYFR J'avais un peu laissé tomber ce tuto, mais j'ai besoin de me rafraîchir les idées sur la 2D.
1) J'ai repéré quelque chose que je trouve étrange (en fait je pense qu'il y a peut-être une erreur). C'est peut-être dans les 979 commentaires, mais bon. A partir de 19:34, tu écris la méthode MovePlayer (). targetVelocity est une vélocité, soit une vitesse, s'exprimant en m/s. Pour la composante Y, rien à dire, on a aussi une vélocité. Mais pour X, tu affectes horizontalMovement, qui est une distance (Input.GetAxis est un nombre sans unité, moveSpeed une vitesse, Time.deltaTime une durée : le produit de ces 3 nombres est une distance). On a donc un problème d'homogénéité de ta formule. Comme tu mets une vitesse de 250 (ce qui est énorme quand même pour un petit bonhomme), il n'y a pas de conséquence. J'ai utilisé Input.GetAxis("Horizontal") * moveSpeed, et cela permet de fonctionner avec une vitesse de 5.
2) Le problème du Player qui "coince" sur certains tuiles est réglé par l'ajout d'un Collider. J'ai remplacé le boxCollider2D par un capsuleCollider2D, même si je ne suis pas sûr d'avoir un gain (certes un collider, c'est mieux que deux, mais le capsuleCollider a des parties arrondies).
3) pour le isGrounded, je trouve dommage de ne pas se servir de la vélocité sur l'axe Y. C'est plus simple à coder et à mettre en oeuvre. Je me demande s'il y a une raison que j'ignore pour ce choix.
4) le smoothTime. Grand moment de doute lors de ce tuto... J'aime bien comprendre les raisons d'un choix, et j'ai donc cherché comment choisir cette valeur en général. Je n'ai trouvé que des explications assez générales (plus elle est petite, plus on rejoint la valeur cible rapidement), mais rien de bien concret. Visiblement, Unity remplace une valeur nulle par une petite valeur, et quelques essais m'ont montré que la valeur que tu as choisi est convenable. Une variation permet au Player de rejoindre sa vitesse de croisière plus ou moins vite. Bref, j'ai lâché un gros commentaire sur la page de documentation de Vector2.SmoothDamp (une fois de plus, aucun exemple de code).
J'admire beaucoup tes vidéos très didactiques, et merci pour le temps passé.
salut, tu aurais pu avec générosité copier coller dans la description le code du PlayerMovement car perso moi je galère et j'arrive pas à la faire fonctionner🤣🤣🤣
moi aussi visual studio ne prend pas en compte vector3
@@bounty5394 vérifie que tu as bien lié unity et visual studio
Pourquoi sur le script dans la console ça me met que Playermove n'existe pas
???
Respect to your good work, thanks a lot
Petit détail qui est d'une grande importance dans la gestion des méthodes Update et FixedUpdate.
Je t'entends dire "au fur et à mesure du temps" pour DeltaTime, et je ne sais plus exactement quoi ailleurs. C'est très imprécis et je pense que ça aurait mérité une minute ou deux d'explication, c'est vraiment un fondamental :
Update est appelé à chaque frame, c'est à dire par exemple 60 fois par seconde si la synchro verticale est activée sur un écran 60hz, mais le nombre d'images par seconde peut être variable aussi, par exemple si le jeu est trop lourd pour que les 60 images soit calculées chaque seconde, ou si la synchro verticale est désactivée. DeltaTime permet de savoir quelle durée précise s'est écoulée depuis la dernière frame, ce qui rend possible une gestion des mouvements avec des durées de frame variable : en multipliant une vitesse par une durée de frame, si les fps sont deux fois plus élevés alors DeltaTime sera en moyenne deux fois plus petit, ce qui ajoutera une vitesse multipliée par une valeur divisée de moitié. deux fois moins vite donc, mais avec deux fois plus de frames : ça compense.
Mais ça ne compense pas toujours de façon aussi précise qu'on pourrait en avoir besoin, particulièrement lorsqu'il s'agit d’interactions de collisions, d'attractions, et autres joyeusetés physiques. Dans ce cas c'est préférable d'utiliser FixedUpdate qui, elle, n'est pas dépendante du nombre d'images par seconde, elle est appelée à intervalles totalement fixe ce qui permet, par exemple, d'avoir des simulations physiques reproductibles et non dépendantes des performances du PC.
J'ai HATTTEEEEE!!!
Mon joueur n'es pas soumis à la gravité, comment je fais ? Et mon monde tombe tous seul et mon personnage avence tous seul aussi alors que j'ai fais la programmation ??
As- tu ajouté le Rigidbody2D?
Super série. Je débute depuis moins d'une semaine dans le codage et la création.
Juste petite info. Maintenant Unity demande à rentrer "UnityEngine.Input" au lieu de "Input" sur la version 3.7 de Unity.
Ah et pour les débutant en code comme moi. Expliquez la manipulation pour créer les { } ca peux en aider.
Pour les collider qui coince avec les tiles, y'a l'option "Edge radius" à mettre 1. Pas besoin d'ajouter un 2e collider.
23:40 effectivement, ça fait 20minutes que je cherche mon erreur ( les mouvements ne se faisaient pas ) alors que j'avais mis fixedUpdate a la place de FixedUpdate
Merci pour t'on commentaire. je ne trouver pas l'erreur et c'était la même
@@rims4698 la même mdr
@@Axel-kv5kn salut j'ai une question , quand je recopie toute la partie code certains mots ne se mettent pas en vert ou bleu et je ne trouve pas le problème
Merci j avai oublier le d sans le voir
Merci tes un dieu
Je fais mes devoirs ( confinement ), et j'ai des troubles au ventre tellement que j'ai envie de faire un jeu xD
PARDON je voulait dire ses super tes vidéo continue
Merci très bon travail.
Pk groondchekleft et right ne s'affiche pas en dessous de is jumping
Ca marque ca en erreur
Assets\Script\PlayerMovement.cs(20,44): error CS1503: Argument 1: cannot convert from 'UnityEngine.Transform to 'UnityEngine Vector2
C bien d'liker mais avez vous la rep
@@wiser6402 nop dsl g le mem probleme
Mon personnage ne saute pas à chaque foit quand je suis sur le sol, j'ai fait tout comme le tuto mais sa marche pas :/
Tu as trouvé une solution?
la même je deviens fou
Bon tuto, j'ai adoré la partie programmation.
Merci pour cette série de vidéos, je découvre et c'est vraiment COOLOS
Petite question sur ton Visual Studio Code
Tu as une extension pour qu'il comprenne que tu fais du C#? Parce que moi quand je code il ne comprend pas et surtout il me dit que j'ai des erreur alors que j'ai bien copié (si si j'ai vérifié )
ps: le code marche mais j'ai aucune auto-complétion
J'utilise Visual Studio (fourni avec Unity) et non pas VS Code qui est un autre logiciel. Je te recommande d'installer Visual Studio en même temps que Unity
@@TUTOUNITYFR pardon effectivement c'est ce que j'ai fait (l'habitude de coder sur VS Code)
mais tu dois avoir des extensions je suppose pour qu'il comprenne que tu es en C#? moi il me met "fichier divers" dans le projet (ctrl + f2)
j'arrive à suivre, pas de soucis mais je penses que ce serait plus facile en suivant tes reglages
Merci encore pour tes videos
Salut j'ai suivi ton programme à la lettre mais mon "player" ne bouge pas quant j'appui sur les touches gauche et droite (les flèches)
J'ai eu le même souci, qui c'est avéré être une majuscule manquante ("fixedUpdate" au lieu de "FixeUpdate")
@@Mreaperjack Super merci
jai tout bien mis mais sa ne marche quand meme pas
@@Mreaperjack C'était EXACTEMENT mon problème, merci !
@@Mreaperjack j'ai vérifier tous les codes ce n'était pas sa :/
J'ai mis le même code à l'identique et quand je saute sa marche une fois sur deux
la même :/
moi aussi :(
Salut, je ne sais pas si tu as abandonné la creation de ce jeu. Mais je voulais te donner la solution. En fait il suffit de remplacer le "GetButtonDown" par "GetButton" tu n'as plus qu'a tester.
@@itizmath4356 Ok merci !
@@itizmath4356 je le reprends dès que possible
Merci pour tes vidéos !
Merci pour le tuto c est très claire
Merci pour se tuto, j'ais u un problème d'orthographe,mais grasse a ta vidéo ua-cam.com/video/W8h-dNYqCG4/v-deo.html ,j'ais pus réussie a résoudre mer problème. un GRAND MERCI
Ps: Ta chain UA-cam et l'une des rare pépite que on peux trouver sur sait plateforme, Continu ! J'ais Hate de la suis que tu nous réserve.
24:30 mon personnages ne bouge pas du tout alors que j'ai tout suivis :(
Moi aussi
la meme
Idem ça va faire 10 fois que je recommence et j'ai toujours le même problème
@@damyaabdiche5643 moi j'ai laisser tomber
Oui je regarde a 1h du matin mais tes le meilleur, je m'abonne tu va m'aider cart ses moi reve de fais des jeu mais je sais pas,comment faire et sa ma beaucoup aidé MERCI
Merci pour ce super tuto
Comment faire pour régler le personnage flou svp?
Dans l'inspector de ton tile characters, tu n'as pas mis Filter Mode : Point (no filter) ;)
bonjour, a 23:53 ds le PlayerMovement (script) je n'ai pas le "move speed" et "rb" j'ai juste script PlayerMovement
est ce que quelqeu'un saurait m'aider, merci bcp
La même...
konepow je suis dans la même situation je comprend pas
j'ai eu le même problème, il faut vérifier la syntaxe, si il ne manque pas espaces , par exemple au float...
Est ce que tu as bien mis les valeures en public ?
Je crois avoir compris pk mais je suis pas sur c'est mon tout premier "jeu" en faites pour moi a 8:30 quand il crée move player ca le supprime quand je renommer
J'ai une question
Q : A défaut d'utiliser ton script pour les déplacements j'ai utilisé la méthode avec les Vector comme tu nous l'a montré dans la série des base du C# est ce que c'est bien ou ça causera un problème a mon jeu après ?
Clair et efficace
Merci
L'episode fini MAINTENANT LE 3eme
Hey j'ai un problème dans mon code Vector3 MonoBehaviour et rigidbody n'est pas colorier on peur m'expliquer où est le probleme car soit je suis aveugle soit je suis débile XDD
moi pareil je suis deg
Chui pas le seul mdrr
j'ai pareil, avez vous trouvé une solution aujourd hui ?
@@matc1255 nope j'ai abandoner le projet hehe
@@desvelosenlair en fait c'était simple ;)
You really good at explaining thank you
tous d'abord je voulais te dire un grand Merci pour ton travaille et que j apprise ton travaille et merci pour ces tutos que tu nous partage. Pourrais tu nous faire une videos pour faire un jectpack comment un peut un astronaute et qui consomme de l énergie pour le faire fonctionner avec une barre qui nous montre l'énergie qui nous restes bien sur tous cela en 2D merci. :D et si tu aurais la flemme de nous faire ce tuto pourrais tu me dire en grosomodo comment je pourrais le faire MErci :D
Qui regarde Dani? 😂
moi
Moi aus
moi
moi
Au fait, merci à tous pour vos partages de bugs et solutions !!
Thanks from heart.really helpful
mon perrsonnage continue de traversser le sole meme quand je modifie mes coliseur sinon continue comme sa tes video son super
Thank you man for sharing this stuff
Hello ! Merci beaucoup pour ta vidéo ! Décidemment je ne comprends pas tout au code (malgré le fait d'avoir vu ta vidéo sur le C#), mais bon je débute et c'est normal, tout ne vient pas d'un coup ! :D
J'ai eu quelques problèmes pour le tuto, les mêmes que certains ont été confrontés dans les commentaires (les sauts latents, mon perso qui s'accroche aux parois, etc...). Mais en lisant ta description (j'ai l'impression que comme moi, beaucoup sont passés à côté), c'est rassurant de voir que les problèmes vont être résolus par la suite !
Enfin bref merci à toi ! Je ne suis pas très riche, mais je veux te faire un petit don pour ta série sur le C#, et quand j'aurais fini cette série sur les jeux 2D, je t'en referai un autre ! Est-ce que tu préfères Tipee ou uTip pour les dons ? Je ne connais pas les plateformes, est-ce qu'elles te prennent un pourcentage comme les pourboires chez UberEats ? Je n'aimerai pas qu'elle te pique une partie ! >:(
Enfin bref dis-moi celle que tu préfères ! Merci encore :O
mdr moi aussi g appris a code en python mais meme en regardant ses tutos c totelemnt autre chose je comprends rien
Tes tutos sont super ! Bravo
J’ai juste une question : Quand, à 19:38,tu sautes une ligne, ça rajoute automatiquement les {} mais sur mon ordinateur, ça ne le fait pas, alors que je n’ai pas ces touches sur mon clavier…
J’ai essaye de copier-coller mais ça ne marche pas non plus.
ta pas alt gr 5 ?
thanks, it actually let me through so i could download it.
J'ai ce warning qui est apparu après les dernières modifs pour le script "The referenced script (Unknown) on this Behaviour is missing!". Est-ce que c'est grave docteur ?
Et j'ai mon perso qui ne saute pas toujours... mais j'ai lu les commentaires et j'ai cru comprendre que ça allait s'arranger par la suite ;)
Bonjour,
Tout d'abords, merci et bravo pour cette série de tuto ! J'ai un petit soucie quand j'ai double cliquer la première fois sur MovePlayer j'ai maladroitement cliquer sur une application qui na rien à voir avec la fonction demander ( qui est mon éditeur de texte ), maintenant à chaque fois que je clique sur MovePlayer ca me balance sur l'appli. Comment puis-je changer ca ?
Si je suis bien, pour donner des stats à un perso il faut mettres ses stats (atk, def par ex) dans un script "stats" ? ou il y a qq chose de special pour les stats
pour le script, je conseille plutôt visual studio code car plus ergonomique et plus facile d'accès
c pas ce quil utlise ?
Salut, Je regarde pas mal de Tuto Unity en ce moments est j'ai quelque remarque:
* Dans FixedUpdate, je voie souvent qu'on utilise Time.fxedDeltaTime au lieu de Time.deltaTime (qui est pour la méthod Update).
* Je pense que c'est l'inverse sur ta convention de nommage, le signe '_' est utilisé comme raccourci a "this." C'est donc les propriété private qui onts un _ au debut.
* Pense tu qu'on peut mettre à jours la propriété isGrounded seulement quand le joueur essais de sauté ? Pour gagné en performance ?
Super taff, j'avais pas encore vu cette méthode de déplacement avec RigidBody, c'est nickel :D
Merci. et vivement la suite, même si c'est long d'attendre 1 semaine :D
Certains éléments des scripts doivent être effectivement revu, c'est le cas du système de saut et de certaines conventions de nommage. Tout ça est prévu dans un épisode spécial refacto. Merci pour le commentaire :)
Au niveau des conventions de nommage, comme le pluriel que j'utilise, il en existe autant que d'équipes de codage, mais avec la communauté OpenSource, il commence à y avoir une standardisation mais chacun défend son héritage, ce qui peut paraître normal. Personnellement, la notation hongroise (hungarian notation) ne présente aucune faille, et est du type : Scope_TypeCamelCaseExplicitVariableName. À regarder à titre de culture de codage, parce que les éditeurs intellisense faussent la donne. Prenez simplement un Notepad, et écrivez du code en C, et vous serez très vite perdus. Mais par chance, si vous n'utilisez que des IDE comme Visual Studio, vous ne serez jamais trop perdus.
Bonjour et merci pour cette chaine.
Je ne comprend pas pourquoi utiliser des vector3 . Dans le cour de c# que tu as fais, tu explique bien les vector2 et 3 et il semble plus normal d'utiliser les vector2 ?
J'ai essayé avec ça et ça fonctionne pareil avec moins de ligne et avec la logique de tes cours. J ne comprend pas trop le veteur de velocité en faite
public float moveSpeed;
public Rigidbody2D rb;
Vector2 movement;
void Update()
{
movement.x = Input.GetAxis("Horizontal");
}
void FixedUpdate()
{
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
}
Thank ... go more video 2D!!!
Déjà merci de donné de ton temps pour produire des vidéo. durant la vidéo j'ai u deux petit soucis mon "Sprite" c'est afficher environ en 4x plus petit qu'il ne devrait sur ma scène alors que je l'est glisser déposé ( la seul solution que j'ai trouver rapidement c'est de le re scale mais je trouve pas ça propre ) le second c'est que lors des déplacement avec les flèche ou alors sur l'appuie de la touche espace celle ci ne soit pas détecter par unity, j'ai même essayer de changer ces touche dans la config de unity mais toujours le même problème, si quelqu'un a une solution je prend :) sinon je reposterai en réponse a mon message la solution que j'ai trouver.
sorry pour les fautes :(