« Unity » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 29 : Ligne 29 :
==Ajouter des scripts sur les objets==
==Ajouter des scripts sur les objets==
Pour créer de nouveaux scripts, il est possible de faire un clic droit dans le bloc "projet" et créer un script C# ou javascript. Les deux types de scripts utilisent une bibliothèque propre à Unity. Pour les assigner à un objet, il suffit de drag and drop le script depuis le bloc "projet" sur l'objet concerné dans le bloc "hiérarchie". Le bloc "inspector" permet de modifier rapidement certains paramètres d'un script assigné à un objet (pas le script seul !) sans avoir besoin d'éditer le code.
Pour créer de nouveaux scripts, il est possible de faire un clic droit dans le bloc "projet" et créer un script C# ou javascript. Les deux types de scripts utilisent une bibliothèque propre à Unity. Pour les assigner à un objet, il suffit de drag and drop le script depuis le bloc "projet" sur l'objet concerné dans le bloc "hiérarchie". Le bloc "inspector" permet de modifier rapidement certains paramètres d'un script assigné à un objet (pas le script seul !) sans avoir besoin d'éditer le code.
===Exemples de scripts pour réaliser un jeu de plateforme===
Si vous désirez réaliser un petit jeu de plateforme 2D, vous pouvez commencer par copier le script suivant et le lier au personnage principal, ce script permettra de diriger le personnage de gauche à droite et de le faire sauter à une certaine hauteur:
<source lang="c#">
public class SimplePlatformController : MonoBehaviour {
    [HideInInspector] public bool facingRight = true;
    [HideInInspector] public bool jump = false;
    public float moveForce = 365f;
    public float maxSpeed = 5f;
    public float jumpForce = 1000f;
    public Transform groundCheck;
    private bool grounded = false;
    private Animator anim;
    private Rigidbody2D rb2d;
    // Use this for initialization
    void Awake ()
    {
        anim = GetComponent<Animator>();
        rb2d = GetComponent<Rigidbody2D>();
    }
   
    // Update is called once per frame
    void Update ()
    {
        grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
        if (Input.GetButtonDown("Jump") && grounded)
        {
            jump = true;
        }
    }
    void FixedUpdate()
    {
        float h = Input.GetAxis("Horizontal");
        anim.SetFloat("Speed", Mathf.Abs(h));
        if (h * rb2d.velocity.x < maxSpeed)
            rb2d.AddForce(Vector2.right * h * moveForce);
        if (Mathf.Abs (rb2d.velocity.x) > maxSpeed)
            rb2d.velocity = new Vector2(Mathf.Sign (rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);
        if (h > 0 && !facingRight)
            Flip ();
        else if (h < 0 && facingRight)
            Flip ();
        if (jump)
        {
            anim.SetTrigger("Jump");
            rb2d.AddForce(new Vector2(0f, jumpForce));
            jump = false;
        }
    }
    void Flip()
    {
        facingRight = !facingRight;
        Vector3 theScale = transform.localScale;
        theScale.x *= -1;
        transform.localScale = theScale;
    }
}
</source>
=Communauté=
=Communauté=
La communauté est très active et Unity est régulièrement mis à jour. Ce qui veut dire que vous aurez facilement de l'aide, vous trouverez beaucoup de tutoriaux et la stabilité est assurée.
La communauté est très active et Unity est régulièrement mis à jour. Ce qui veut dire que vous aurez facilement de l'aide, vous trouverez beaucoup de tutoriaux et la stabilité est assurée.

Version du 29 mai 2017 à 14:35

Présentation

Unity est un moteur de jeu et un environnement de développement capable de créer des jeux en 2D ou en 3D. La licence personnelle est gratuite et disponible sur mac et windows. Les licences professionnelles sont payantes. Il y a un asset store accessible sur le site officiel et directement dans la fenêtre d'Unity pour acheter ou télécharger gratuitement (dépend des assets) des assets, que l'on peut utiliser dans des jeux qui seront monétisés ou non. Unity a permis le développement de jeux tels que Ori and the blind forest, Rust et Guns of icarus online.

Installation

Pour installer Unity, il suffit de télécharger l'exécutable sur le site officiel et suivre les étapes d'installation. Le site propose automatiquement la version adaptée à votre OS.

Utilisation

Créer un projet

Unity launcher

Lorsque vous démarrez Unity, le launcher ci-dessus s'affiche et permet de créer un nouveau projet ou de charger un projet existant. Si vous créez un nouveau projet, il vous sera possible de définir le projet en 2D ou en 3D, et de sélectionner des assets particuliers à charger avec le projet. Il est possible de charger des assets par la suite selon les besoins.

Si vous débutez, il vaut mieux n'importer aucun assets à cet étape, afin de ne pas alourdir le projet inutilement.

Fenêtre principale

Fenêtre de projet

La fenêtre est séparée en plusieurs blocs redimensionnables et déplaçable selon vos envies. Il est possible de superposer les blocs pour créer un système d'onglets qui ont tous les mêmes dimensions et positions. Évitez de superposer Hierarchy, assets et scene. Cela rendra votre travail pénible. Le bouton "window" tout en haut de la fenêtre permet d'afficher ou de masquer des blocs particuliers. Les blocs principaux sont:

  • Scene. C'est ici que vous déplacez les assets et que vous créez une scène pour votre jeu.
  • Hierarchy. Les objets qui constituent votre scène sont listés ici en arborescence. Il est possible d les lier ou délier par drag and drop. Il est aussi possible d'y importer d'autres objets avec un clic droit.
  • Project. Contient les dossiers d'assets que vous voulez utiliser. Il est possible d'en créer et d'en importer de nouvelles par clic droit. Vous pouvez aussi drag and drop des fichiers dans cette zone pour les importer dans Unity directement. Vous pouvez drag and drop les assets directement dans la scène pour les utiliser dans votre projet.
  • Inspector. Permet d'éditer des propriétés des objets ou des scripts sélectionnés dans la scène et/ou la hiérarchie.
  • Game. Cette fenêtre s'affiche automatiquement en premier plan lorsque vous cliquez sur le bouton play au centre de l'interface. Cela vous permet de tester le jeu sans devoir build à chaque fois.

Importer des assets

Vous pouvez utiliser l'asset store pour trouver des assets. Si vous les téléchargez directement depuis Unity, ils seront ajoutés automatiquement au projet. Sinon, vous pouvez drag and drop depuis vos documents dans la fenêtre Unity pour les importer. Il est possible d'importer des objets 3D créés avec Blender, 3D Studio max, Maya etc, mais uniquement s'ils sont exportés en format ".fbx". Unity ne reconnaît pas les formats propriétaires et le format ".obj".

Plus de détails sur les formats importables.

Ajouter des objets dans une scène

Il suffit de drag and drop les objets directement depuis le bloc "projet" ou le bloc "hiérarchie" dans la scène. Vous pouvez sélectionner les objets avec un clic gauche et tourner la caméra avec un clic droit. Vous pouvez défiler la vue avec un clic sur la molette de la souris et zoomer ou dézoomer en roulant la molette en avant ou en arrière.

Objet sélectionné

Vous pouvez déplacer les objets au moyen des flèches verte, rouge et bleue qui apparaissent sur l'objet sélectionné. Il est possible de réorienter la caméra rapidement selon un axe en cliquant sur les flèches de même couleur en haut à droite de la scène.

Options de modification

Vous pouvez utiliser les boutons en haut de la fenêtre pour effectuer d'autres actions sur les objets (rotation, redimensionnement). Vous pouvez faire la même chose en regardant le bloc "inspector" et en modifiant les valeurs numériques pour plus de précision.

Ajouter des scripts sur les objets

Pour créer de nouveaux scripts, il est possible de faire un clic droit dans le bloc "projet" et créer un script C# ou javascript. Les deux types de scripts utilisent une bibliothèque propre à Unity. Pour les assigner à un objet, il suffit de drag and drop le script depuis le bloc "projet" sur l'objet concerné dans le bloc "hiérarchie". Le bloc "inspector" permet de modifier rapidement certains paramètres d'un script assigné à un objet (pas le script seul !) sans avoir besoin d'éditer le code.

Exemples de scripts pour réaliser un jeu de plateforme

Si vous désirez réaliser un petit jeu de plateforme 2D, vous pouvez commencer par copier le script suivant et le lier au personnage principal, ce script permettra de diriger le personnage de gauche à droite et de le faire sauter à une certaine hauteur:

public class SimplePlatformController : MonoBehaviour {

    [HideInInspector] public bool facingRight = true;
    [HideInInspector] public bool jump = false;
    public float moveForce = 365f;
    public float maxSpeed = 5f;
    public float jumpForce = 1000f;
    public Transform groundCheck;


    private bool grounded = false;
    private Animator anim;
    private Rigidbody2D rb2d;


    // Use this for initialization
    void Awake () 
    {
        anim = GetComponent<Animator>();
        rb2d = GetComponent<Rigidbody2D>();
    }
    
    // Update is called once per frame
    void Update () 
    {
        grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));

        if (Input.GetButtonDown("Jump") && grounded)
        {
            jump = true;
        }
    }

    void FixedUpdate()
    {
        float h = Input.GetAxis("Horizontal");

        anim.SetFloat("Speed", Mathf.Abs(h));

        if (h * rb2d.velocity.x < maxSpeed)
            rb2d.AddForce(Vector2.right * h * moveForce);

        if (Mathf.Abs (rb2d.velocity.x) > maxSpeed)
            rb2d.velocity = new Vector2(Mathf.Sign (rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);

        if (h > 0 && !facingRight)
            Flip ();
        else if (h < 0 && facingRight)
            Flip ();

        if (jump)
        {
            anim.SetTrigger("Jump");
            rb2d.AddForce(new Vector2(0f, jumpForce));
            jump = false;
        }
    }


    void Flip()
    {
        facingRight = !facingRight;
        Vector3 theScale = transform.localScale;
        theScale.x *= -1;
        transform.localScale = theScale;
    }
}


Communauté

La communauté est très active et Unity est régulièrement mis à jour. Ce qui veut dire que vous aurez facilement de l'aide, vous trouverez beaucoup de tutoriaux et la stabilité est assurée.

Liens