Interaction et physique
Scripts C# et scripts visuels
1. Définition
Le scripting dans Unity permet aux développeurs de créer des comportements et des fonctionnalités pour les objets du jeu en utilisant des langages de programmation tels que C#.
En utilisant le scripting C# dans Unity, les développeurs peuvent accéder aux fonctionnalités et aux API (interfaces de programmation d’application) de Unity pour créer des comportements pour les objets du jeu tels que la gestion des entrées de l’utilisateur (exemple : les interactions clavier/souris), la physique (exemple : faire bouger un objet en réaction à une entrée de l’utilisateur), la création d’interfaces utilisateur (exemple : l’affichage du temps de jeu ou des points de vie), l’animation, la gestion des ressources, et bien plus encore.
En plus de C#, Unity propose également un système de scripting visuel appelé Visual Scripting ou Visual Scripting Editor. Ce système permet aussi aux développeurs de créer des comportements pour les objets du jeu, mais en proposant une interface graphique conviviale pour y arriver. Les développeurs peuvent utiliser des blocs de fonctionnalités prédéfinies et les relier entre eux pour créer des comportements complexes sans écrire de code. Cette approche est souvent utilisée par les développeurs qui n’ont pas de compétences en programmation ou qui cherchent à créer rapidement des prototypes de jeu.
2. Structure d’un script
a. Script C#
Un script C# dans Unity hérite de la classe de base MonoBehaviour. Cette classe contient les méthodes et événements permettant de contrôler un GameObject à n’importe quel moment du jeu. Par exemple, les méthodes les plus communément utilisées dans Unity, Start() et Update() sont contenues dans la classe de base MonoBehaviour. Seuls les scripts héritant de la classe MonoBehaviour peuvent être liés à des GameObject. Il est possible de créer des scripts qui n’héritent pas de cette classe (pour créer des objets C# par exemple) mais...
Création des scripts
1. Script C#
a. Création du fichier
Pour créer un script C# dans Unity, il faut faire un clic droit dans l’onglet Projet, puis sélectionner Create - C# Script.
b. Aide à l’organisation du code
Le script créé contient un code de base (cf. section Scripts C# et scripts visuels de ce chapitre) avec comme nom de classe le nom du fichier créé. Avant de montrer les fonctions utiles qui sont propres à Unity, il est utile de connaître quelques bonnes pratiques pour organiser son code et le rendre lisible.
Lorsque vous créez des variables publiques dans un script, celles-ci se retrouvent visibles dans l’Inspector de l’éditeur Unity. Donc, plus le script est conséquent, moins les variables sont lisibles dans l’éditeur.
C’est pour cela qu’il est conseillé d’utiliser la balise [Header] pour aider à séparer les variables par catégorie. La balise [Space] permet aussi de faire des séparations sans avoir de titre.
De plus, il arrive que certaines variables publiques n’aient pas besoin d’être visibles dans l’Inspector. La balise [HideInInspector] est alors utilisée.
De même, plus un script a de nombreuses fonctions, plus il est facile de s’y perdre. Pour aérer la vue du code, il est possible d’utiliser des sections séparées par #region. Cela permet de factoriser le code par fonctionnalités et permet de parcourir le script plus rapidement sans avoir à fouiller parmi les autres fonctions.
c. Spécificité du code C# pour Unity
Il est facile de développer pour Unity lorsque la maîtrise du langage C# ou tout autre langage orienté objet est déjà acquise. Cependant, il y a quelques différences dans la façon d’appréhender les problèmes.
-
Accessibilité des éléments de la scène : pour pouvoir interagir sur des éléments du jeu avec le code, il est nécessaire d’y avoir accès, et il y a pour cela plusieurs façons de faire :
-
La manière la plus courante d’accéder à un objet de la scène dans un script est de mettre une variable publique dans le script qui a comme type l’élément recherché...
Utilisation de la physique 2D
1. Définition
La physique 2D dans Unity fait référence au système de simulation de la physique utilisé pour gérer les interactions et les mouvements des objets dans un environnement de jeu. Il s’agit d’un ensemble de règles et de comportements qui permettent aux objets d’interagir entre eux en respectant les principes de bases de la physique tels que la gravité, les collisions, les forces et les réactions.
La physique 2D dans Unity est basée sur le moteur de physique appelé « Box2D » qui est un moteur de physique open source déjà bien établi. Il utilise ce moteur en fournissant une interface conviviale pour travailler facilement sur les fonctionnalités de la physique 2D.
Les concepts clés de la physique dans Unity sont les suivants :
-
Collider : ce composant permet de déterminer la forme et la zone de collision de l’objet auquel il est attaché. Cette zone permettra de déterminer comment les objets interagissent entre eux au moment de la collision grâce aux événements.
-
Rigidbody2D : c’est le composant qui permet de simuler la physique d’un objet en contrôlant les mouvements, la gravité, les forces et les réactions physiques de l’objet. Bien configuré, il peut reproduire une physique réaliste, terrestre ou non, aussi bien pour des objets animés tels que des personnages ou des véhicules que pour des objets statiques tels que le sol ou les bâtiments.
2. Différences entre physique 2D et 3D
a. La composante Z
La différence la plus évidente entre la 2D et la 3D est la dimension en plus qui est représentée dans l’espace par l’axe Z. Cependant, cet axe est aussi disponible en 2D, bien que très peu impactant. En effet, l’axe z permet de donner une notion de profondeur à un objet. Ainsi, si visuellement deux objets semblent rentrer en collision, ils n’auront aucune interaction entre eux si leur composante z est différente. Avec les mêmes conditions, les deux objets rentreront en collision en 2D même si leur composante z est différente car elle est ignorée par la physique 2D.
Les seules exceptions concernant la composante z en 2D sont :...