EloiStree / 2024_07_19_CharleroiStreetAR

Apprendre à faire Unity3D par le street AR pour commencer dans l'industrie du jeux vidéo
0 stars 0 forks source link

Workshop: Hello C# (7-11 Octobre) #157

Open EloiStree opened 3 months ago

EloiStree commented 3 months ago

Introduction de l'atelier:

image
https://youtu.be/RMhXeHfibh4

L'exercice est simple : vous avez un drone. Votre objectif est de le maintenir en vie le plus longtemps possible en utilisant uniquement C#.
Vous ne devez pas étudier Unity3D, car cette semaine est dédiée à C#.

Le but de la semaine est de pratiquer C# jusqu'à vendredi :

Planning :

Débutant : Réussir à attraper tous les points avec un drone "multi-terrain". Junior : Réussir à attraper tous les points avec un drone volant et un sous-marin. Médior : Utiliser tous les drones à disposition pour attraper tous les points en un temps minimum. Senior : Même exercice, mais avec le mode "Bullet Hell". Senior+ : Même exercice, mais avec 1 000 à 16 000 drones.

Sharp Them All Challenge:


Formation:

EloiStree commented 3 months ago

image https://www.echalk.co.uk/amusements/Games/asteroidsClassic/ateroids.html

EloiStree commented 1 month ago

Quatre à cinque participants ont déjà réalisé l'exercice avec Scratch. Je vais donc passer directement à Unity3D, tout en apportant un soutien supplémentaire aux nouveaux le premier jour.

C'est quoi Unity3D déjà ?

Cette semaine, nous nous concentrons sur C# plutôt que sur Unity3D.

Sur le Quest :

EloiStree commented 1 month ago

Étapes à suivre :

image

image

image

image


image

Avant de continuer l'exercice pour découvrir les tableaux et les boucles, nous avons créé un petit niveau avec des points à attraper et un compteur de temps.

Nous avons codé cela avec les étudiants des groupes de découverte :

Nous allons donc préparer le terrain pour le projet KillDozer.

{
   "be.elab.besttiming": "https://github.com/EloiStree/2024_09_06_BestTimingScore.git",
    "be.elab.irctoy": "https://github.com/EloiStree/2023_09_15_IToyControllerRC.git",
    "be.elab.kapla": "https://github.com/EloiStree/2024_10_06_KaplaPlanksPack.git",
    "be.elab.netshortspace": "https://github.com/EloiStree/2024_10_02_32767MMPlayZone.git",
    "be.elab.patounerace": "https://github.com/EloiStree/2024_10_02_PatouneRace.git",
    "be.elab.patouneracedemo": "https://github.com/EloiStree/2024_10_05_PatouneRaceDemo.git",
    "be.elab.toytank": "https://github.com/EloiStree/2024_10_05_KidToyTankTreadModeCode.git",

    "com.unity.inputsystem": "1.7.0"
}

Projet pour commencer directement l'exercice :
SharpThemAllWithDozer

Vidéo montrant comment nous avons préparé ce projet :


Suite:


La 3D 🥰 :

EloiStree commented 1 month ago

Old Planning :

EloiStree commented 1 month ago
EloiStree commented 1 month ago

Créer: 0:00 Installer Unity 1:03 Installer Unity Hub et vérifier l'installation (Android, Java, Visual Studio, WebGL, IL2CPP) 2:23 Créer un projet - Universal Render Pipeline 2:38 Télécharger le template, nom et chemin du projet 3:03 Stocker le projet près de la racine, sauvegarde cloud 4:50 Présentation de Unity 3D Game Engine 7:33 Lumière et caméra 9:45 Game et scène Unity3D 11:26 Créer des cubes 16:25 Ajouter un Rigidbody 17:15 Play Mode 20:10 Créer un cube bulldozer 24:05 Bouger et tourner 25:01 Créer un script de bulldozer 29:09 Qu'est-ce qu'un script MonoBehaviour ? 30:19 Hello World en console 34:06 Translate et GPT 39:14 Position et Update 39:58 Move Forward 41:04 Delta Time 44:33 Téléportation derrière un mur 47:42 Ajouter un pourcentage 49:59 StackOverflow et Forum Unity 56:05 Créer un bâtiment pour le KillDozer avec des prefabs 58:52 Casser un bâtiment :) 1:00:00 Caméra en TPS 1:01:08 Récupérer un objet en Play Mode avec un prefab 1:07:36 Jouer avec les prefabs des bâtiments 1:10:33 Écouter les touches de clavier à l'ancienne 1:26:12 Utiliser "if" pour des vitesses différentes 1:26:12 Utiliser une variable locale 1:28:18 Extraire une méthode 1:31:42 Créer des setters 1:34:55 Utiliser "if" pour restreindre une donnée 1:40:39 Commenter une méthode avec /// 1:46:22 Clavier EN vs FR 1:49:14 Le Input Action System 1:50:35 InputActionReference 1:52:02 L'Asset Store et Rewired 1:52:49 Installer Input depuis le registre Unity 1:55:41 Redémarrer Unity après installation d'Input 1:59:26 Créer le mapping de l'Input de Unity3D 2:02:15 Utiliser une valeur en axis 2:03:15 Ajouter des touches de clavier 2:06:16 Ajouter une manette 2:08:35 Lire une valeur Float 2:10:34 Activer les inputs 2:12:59 Fin de vidéo et introduction à la suivante

Bouger:

0:00 Introduction 0:19 Créer un script d'AI 1:58 Référencer un autre script 3:02 Utiliser un transform pour viser un point 5:13 DrawLine 5:55 Ajouter une position de source 6:39 If condition mal fermée dans une méthode 9:08 NotImplementedException 9:08 Préparer les méthodes "isLeft", "isFront", "isRight" 13:20 Faire tourner avec une référence 14:53 Ajouter des variables membres avec Range et SerializeField 18:19 Ajouter un tooltip 20:11 Créer des variables de debug 27:11 Utiliser Vector3.Angle 28:58 Relocaliser et aplatir une direction 36:20 Utiliser les propriétés 37:16 Vector3.SignedAngle 44:39 Vérifier le code "left", "right", et "front" 48:52 Faire avancer le tank 50:56 Inverse Kinematics 55:17 Créer des variantes de KillDozer 56:52 Red Dot, ancien et nouveau système d'Input

Android: 0:00 Introduction 3:05 Les Vector2 6:37 Utiliser plusieurs caméras 11:23 Faire que la caméra suive une cible 13:58 Placer la caméra en vue TPS et FPS 21:26 Old Input ScreenPosition 28:23 Conversion de pixels en pourcentage d'écran 34:08 Passer de la souris à un joystick (0.5, 0.5) 37:00 Exporter l'application sur Android 37:31 Utiliser SCRcpy pour Android 38:29 Passer le téléphone en mode développeur 40:36 Configurer le projet pour Android 42:07 Définir le nom du package 43:14 Version de l'application 44:52 Choisir l'API cible 48:00 Conflit entre l'ancien et le nouveau système d'input 51:23 Convertir le script Input en InputActionReference 55:08 Utiliser ReadValue float 56:23 Créer un mapping Input Action 57:28 Ajouter un map et une action en Vector2 58:45 Ajouter pointeur, laser, souris et doigt 59:15 Ajouter la pression 1:01:15 Ajouter les mappings à l'Input Reference 1:01:46 Activer les touches à écouter 1:02:32 Démo avec la souris 1:02:43 Configurer le build pour le nouveau système seulement 1:04:25 Builder 1:08:42 Démo sur Android 1:08:55 Ajuster lumière et aliasing 1:10:54 Ajouter la touche "Restart Game" 1:11:47 Cancel any 1:14:01 Créer un InputActionRef vers UnityEvent 1:15:15 Relancer le niveau en cours 1:18:44 Démo : Recharger la scène

Depuis un UI: 0:00 Ajouter le code précédent pour un bouton générique 3:07 Restart du niveau dans un script séparé 5:33 Lier le code du clavier pour redémarrer les niveaux 6:52 Créer un script pour bouger avec deux sliders 8:16 Créer un Canvas UI 8:43 Ajouter un slider 8:52 Positionner le slider en pourcentage 9:45 Créer un deuxième slider vertical 10:15 Utiliser UnityEvent Single de l'UI Unity 11:25 Configurer le Event System pour l'UI 12:21 Comparaison UnityEvent vs Slider en code 13:48 Lire les sliders en code 14:33 Problème de responsive dans Unity3D 15:55 Canvas Scaler 17:30 Utiliser des pixels au lieu de pourcentages 18:04 Ajouter un bouton "Restart" 20:26 Organiser le dossier pour préparer l'export 24:01 Vérification finale du fonctionnement

Configurer un terrain d'entrainement:
0:00 Cloner Patoune Race 5:45 Créer un package de démo 9:41 Importer la zone de jeu 13:27 Ajouter le Dozer avec un point rouge 14:48 Ajouter un sol et une zone de jeu de 65 m 18:03 Ajouter de l'eau 22:54 Ajouter les caméras 24:15 Ajouter la scène au projet 28:12 Créer un "Patoune" 28:29 Ajouter un collider Checker 32:29 Ajouter un checkpoint manager 40:13 Démo du manager 41:53 Ajouter le meilleur temps pour le jeu 1:06:03 Randomiser les points de passage 1:24:12 Démo 1:35:09 Sauvegarder le package du Dozer en version release 1:41:44 Transformer un git en package pour le manager 1:43:42 Créer un package sur Git pour la démo 1:56:23 Vérifier que ça fonctionne 1:57:55 Vérifier que ça fonctionne en environnement isolé 2:03:05 Créer un projet Unity 2:03:45 Créer un fichier .gitignore 2:05:02 Ajouter les packages pendant le démarrage 2:10:47 Créer une scène dans le projet à partager 2:18:04 Configurer le projet pour Android 2:20:31 Passer le projet sur Android 2:21:19 Build et run, vérifier le bon fonctionnement 2:27:34 Déplacer le projet, ajouter commit, pull et push avec ignore 2:28:38 Vérifier la taille des fichiers avec WinDirStat 2:31:26 Sauvegarder et terminer

EloiStree commented 1 month ago

Fonctionnalités à ne pas manquer :

  1. Paramètres de méthode
    • Paramètres d'entrée, de sortie et de retour
    • in, out, ref, params, return
  2. Encapsulation
    • Accesseurs et mutateurs (getters et setters)
      • Implémentation des getters et setters en Java
      • Implémentation des getters et setters en C#
  3. Surcharge
    • Surcharge de méthodes
    • Surcharge des opérateurs
  4. Types primitifs
    • Gestion des types primitifs
  5. Structures de contrôle
    • if, else, switch
  6. Opérations arithmétiques
    • Opérations : +, -, *, /, %
    • Incrémentations : a = a + 1, a += 1, a++
  7. Chaînes de caractères
    • String et char
  8. Collections
    • List et Array
  9. Sérialisation
    • Attribut [SerializedField]
    • Attribut [System.Serializable]
  10. Invocation de méthodes
    • Méthodes Invoke et InvokeRepeating
  11. Static et Singleton
    • Modificateur static
    • Patron de conception singleton
  12. Génériques
    • Utilisation de types génériques (T)
  13. Héritage en MonoBehavior
    • Héritage de classes en contexte MonoBehavior