Aller au contenu

Introduction à Unity

Unity est l’un des moteurs de jeu les plus populaires au monde. Il permet de créer des jeux 2D, 3D, VR et AR pour de nombreuses plateformes.

  • Multiplateforme : PC, consoles, mobile, web, VR/AR
  • Communauté : Large communauté et Asset Store
  • C# : Langage de programmation accessible
  • Gratuit : Version gratuite pour les petits studios
  1. Téléchargez Unity Hub
  2. Installez Unity Hub
  3. Ajoutez une version LTS de Unity (ex: 2022.3 LTS)
  4. Installez Visual Studio ou VS Code pour l’édition de code
┌─────────────────────────────────────────────────────────────┐
│ Menu Bar │
├────────────┬─────────────────────────┬──────────────────────┤
│ │ │ │
│ Hierarchy │ Scene View │ Inspector │
│ │ │ │
│ (Objets │ (Vue de la scène) │ (Propriétés de │
│ de la │ │ l'objet sélect.) │
│ scène) ├─────────────────────────┤ │
│ │ Game View │ │
│ │ (Vue du joueur) │ │
├────────────┴─────────────────────────┴──────────────────────┤
│ Project / Console │
│ (Fichiers du projet / Logs) │
└─────────────────────────────────────────────────────────────┘

Tout dans Unity est un GameObject auquel on attache des Components :

GameObject "Player"
├── Transform (position, rotation, scale)
├── Sprite Renderer (affichage 2D)
├── Rigidbody2D (physique)
├── Collider2D (collisions)
└── PlayerController (script personnalisé)

Créez un script PlayerController.cs :

using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] private float speed = 5f;
private Rigidbody2D rb;
void Start()
{
// Appelé une fois au démarrage
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
// Appelé chaque frame
float horizontal = Input.GetAxisRaw("Horizontal");
float vertical = Input.GetAxisRaw("Vertical");
Vector2 movement = new Vector2(horizontal, vertical).normalized;
rb.velocity = movement * speed;
}
}
public class GameLoop : MonoBehaviour
{
void Awake() { /* Initialisation avant Start */ }
void Start() { /* Initialisation */ }
void Update() { /* Chaque frame */ }
void FixedUpdate(){ /* Physique, intervalle fixe */ }
void LateUpdate() { /* Après Update, caméra */ }
void OnDestroy() { /* Nettoyage */ }
}
// Détecter les collisions
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Enemy"))
{
Debug.Log("Touché par un ennemi !");
TakeDamage(10);
}
}
// Détecter les triggers (zones sans collision physique)
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Collectible"))
{
CollectItem(other.gameObject);
Destroy(other.gameObject);
}
}