#Unity#GuidecompletUnity#TutorielUnity#Unity6.0+#Développementdejeux

4 min read · 1 month ago

Guide complet Unity 6.0+ : Maîtriser la chasse aux cristaux (Partie 1 - Exploration)

De zero a un jeu complet:Guide complet intégration

Partie 1: Mouvements du joueur

Apercus du projet

Type de jeux: Platforme 2d

Theme:Aventure chasse aux cristals

Fonctionalité principales:Mouvements du joueurs, Combat, IA Ennemie, UI Menu , Audio

Style visuel:Simples Formes

Platofrme de jeux:Pc/Mobile

Structure/Configuration du projet

Étape0:Installtion unity 6.0

  1. Télécharger unity hub

  2. Installer unity 6.0 ou +

Une fois installation terminé, ouvrer uniy hub et créer votre compte unity si cela n'est pas encore le cas, apres que tu te sois connecté, installation de la derniere version de unity débutera automatiquement, Accepter les conditions legal unity pour obeternir une licence personnelle.

Étape1:Nouveau Projet

  1. Ouvrer unity hub

  2. Créer un nouveau project 2d→2D (Built-in Render Pipeline) or Template→Universal 2D(6.1)

  3. Nom du projet: ChasseurDeCristal

  4. Créer la structure de document suivantes:

Assets/

├── Scripts/

│ ├── Player/

│ ├── Enemies/

│ ├── Managers/

│ └── UI/

├── Sprites/

├── Audio/

├── Scenes/

└── Prefabs/

Étape2:Configuration Caméra

  1. Configurer les paramètres de la cameras:

    • Position: (0, 0, -10)

    • Taille: 5 (for 2D orthographic)

    • Arrière-Plan: Environment→Background : Bleu foncé (#1a1a2e)

Configurations de la plateforme

Créer les figures dans unity

1.La scene

  1. Créer les calques Main Camera→(Inspector)Layer→Add Layer:

    1. Ground (Layer 6)

    2. Enemy (Layer 7)

    3. Player (Layer 8)

2.Le Terrain

  1. Créer un GameObject Vide → intitulé: "Ground" SampleScene →(Click Droit) GameObject→Create Empty

  2. Ajouter un Component → Sprite Renderer

  3. Créer un Sprite: Ground →Click Droit → Sprites → Square

  4. Agrandir a la forme désirée

  5. Changer la couleur en gris

  6. Ajouter un Box Collider 2D Ground/Square→Add Component

  7. Assigné le Layer "Ground"

3.Le joueur

  1. Créer un GameObject Vide → intitulé: "Player" SampleScene →(Click Droit) GameObject→Create Empty

  2. Ajouter un Component → Sprite Renderer

  3. Créer un Sprite: Player→Click Droit → 2D Object → Sprites → Square

  4. Agrandir de (1, 1.5, 1) proportions du joueur

  5. Changer la couleur a blue

  6. Ajouter un Rigidbody2D (Freeze Z rotation) Player/Square→Add Component

  7. Ajouter un Capsule Collider 2D Player/Square→Add Component

  8. Créer des objects enfants intitulés "GroundCheck" et "AttackPoint" Player/Square→(Click Droit) GameObject→Create Empty:

    • GroundCheck Position: (-0.25, -0.5, 0)

    • AttackPoint Position:(0.5, 0, 0)

  9. Créer le script PlayerController.cs Player/Square→Add Component

  10. Assigné le Layer "Player"

A la fin de cette section, votre scène devrait ressembler a la capture suivante:

Configuration du Déplacements du joueur

Avant de commencer suivez ce guide vidéo pour configurer le nouveau Input System de unity

https://www.youtube.com/watch?v=BXmUemP3a6o

Étape1:Configurer Input Action

  1. Créer un nouveau input action intituté "PlayerInputActions" Add Component→'PlayerInput'

  2. Script de mouvement(PlayerController.cs)

    using UnityEngine;
    using UnityEngine.InputSystem;
    
    public class PlayerController : MonoBehaviour
    {
        [Header("Movement Settings")]
        public float moveSpeed = 5f;
        private Rigidbody2D rb;
        private Vector2 moveInput;
        private PlayerInput playerInput;
        
        void Start()
        {
            rb = GetComponent<Rigidbody2D>();
            playerInput = GetComponent<PlayerInput>();
        }
        
        void Update()
        {
            // Get movement input from the new Input System
            moveInput = playerInput.actions["Move"].ReadValue<Vector2>();
        }
        
        void FixedUpdate()
        {
            rb.linearVelocity = new Vector2(moveInput.x * moveSpeed, rb.linearVelocity.y);
        }
    }
  3. Attacher PlayerController.cs au joueur Player/Square→Add Component

  4. Saut du joueur: étendre le script PlayerController.cs

[Header("Jump Settings")]
public float jumpForce = 10f;
public Transform groundCheck;
public LayerMask groundLayer;
public float groundCheckRadius = 0.2f;

private bool isGrounded;
 void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        playerInput = GetComponent<PlayerInput>();
        if (groundCheck == null)
        {
            GameObject groundCheckObj = new GameObject("GroundCheck");
            groundCheckObj.transform.SetParent(transform);
            groundCheckObj.transform.localPosition = new Vector3(0, -0.5f, 0);
            groundCheck = groundCheckObj.transform;
        }
    }
void Update()
{
    moveInput = playerInput.actions["Move"].ReadValue<Vector2>();
    CheckGrounded();
    
    // Jump input using new Input System
    if (playerInput.actions["Jump"].WasPressedThisFrame() && isGrounded)
    {
        Jump();
    }
}

void CheckGrounded()
{
    isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, groundLayer);
}

void Jump()
{
    rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpForce);
}
void OnDrawGizmosSelected()
{
    // Visualize ground check
    if (groundCheck != null)
    {
       Gizmos.color = isGrounded ? Color.green : Color.red;
       Gizmos.DrawWireSphere(groundCheck.position, groundCheckRadius);
    }
   
}
  1. Retournement du joueur(PlayerController.cs):

    private bool facingRight = false;
    private SpriteRenderer spriteRenderer;
    
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        spriteRenderer = GetComponent<SpriteRenderer>();
        playerInput = GetComponent<PlayerInput>();
    }
    
    void FixedUpdate()
    {
        rb.linearVelocity = new Vector2(moveInput.x * moveSpeed, rb.linearVelocity.y);
        
        // Handle flipping
        if (moveInput.x > 0 && !facingRight)
        {
            Flip();
        }
        else if (moveInput.x < 0 && facingRight)
        {
            Flip();
        }
    }
    
    void Flip()
    {
        facingRight = !facingRight;
        Vector3 scale = transform.localScale;
        scale.x *= -1;
        transform.localScale = scale;
    }

A la fin de cette section, votre scène devrait ressembler a la capture suivante:

  1. Tester les mouvements

    1. La scene de jeux et les mouvements WASD

    2. Saut avec le Space bar