Un moteur de drone dans Unity
Un moteur de vol né pour un hélicoptère en 2012, devenu la démo Arcade Copter puis un drone qui tourne exactement comme le vrai, en live et en tutoriel sur la chaîne.
droneOne est la troisième vie d’un moteur de vol que je fais évoluer depuis 2012. À chaque fois, la même question : à quoi ressemble un engin volant dans Unity quand on veut qu’il se pilote comme un vrai ?
D’un hélicoptère à un drone
Tout commence par une prestation pour Jimmy Fischer et son studio Studio 3WG (vers 2012-2013) : il lui fallait un script Unity pour faire voler un hélicoptère dans un jeu Android.
En 2015, nous décidons d’en faire une démo avec Arcade Copter : un hélicoptère-drone futuriste dans un monde sombre, éclairé par la lave. Les assets graphiques sont de Stéphane Landry (modélisation 3D, textures et level design). Le jeu n’est jamais sorti : c’était vraiment un projet à côté, alors que nous aurions sans doute pu en faire quelque chose.
Quelques années plus tard, en 2019, je cherche ce que je peux montrer dans mes séries YouTube pour prouver ce qu’on développe en quelques minutes sur Unity. Le moteur de drone prolonge ce que j’avais déjà montré sur le moteur physique 3D, et donne deux épisodes de A toi de coder. C’est ce projet, droneOne, repris de zéro en août 2019.
Le moteur
Le cœur du projet est un DroneController posé sur un rigidbody, et une DroneConfiguration qui rassemble tous les réglages : puissance, vitesse de rotation, limites d’inclinaison. Le modèle visuel est séparé de l’objet physique, ce qui permet de changer de drone sans toucher au comportement.
Quelques étapes marquantes de l’historique :
- l’ArcadeCopter des débuts est renommé DroneEngine, avec un premier modèle à réacteurs ;
- la rotation reproduit exactement celle du drone physique (septembre 2019) ;
- chaque axe a son propre lissage, et la rotation peut être bloquée à zéro sur n’importe quel axe (pitch, yaw, roll !) ;
- un inspecteur dessine dans la scène la flèche de vitesse du rigidbody, la même technique que dans LaForce.
Du prototype au jeu : l’infinite runner
Pendant un live, le prototype devient un infinite runner : un parcours généré par morceaux à partir des assets de Kenney, un compteur de distance, des objets à ramasser et des réacteurs qui bougent avec la puissance. Un nouveau drone inspiré de l’Espadon arrive (je suis un grand fan de Blake et Mortimer) avec sa propre configuration, et la puissance de tangage est réglée spécialement pour le runner.
En octobre 2019, le projet passe au nouvel Input System de Unity pour gérer plusieurs types de contrôles (clavier et tactile) et adopte le modèle à quatre scènes.
Les vidéos
- [A toi de coder] Un moteur de drone, première partie (19 septembre 2019)
- [A toi de coder] Un moteur de drones, partie 2 : nouvel Input System et bucket (17 octobre 2019)
Le piège du jouet
À chaque fois que je reprends ce projet, je passe autant de temps à jouer avec le drone ou l’hélicoptère qu’à le développer. C’est sans doute ce qui le rend pertinent, le plaisir de pilotage est là dès les premières minutes, et c’est peut-être aussi ce qui m’a empêché d’en faire un vrai produit, au sens business du terme.