====== UNITY 3D ====== [[https://unity3d.com|Unity]] est un logiciel 3D temps réel et multimédia ainsi qu'un moteur 3D/2D et physique utilisé pour la création d'animation en temps réel, de contenu interactif comportant de l'audio, de la vidéo et des objets 3D/2D, de jeux. Unity n'est pas sous licence open source mais propose une version freeware. Initialement conçu pour produire des applications mobile pour IOS, Unity permet la production multiplateforme : web player (nécessite un [[https://unity3d.com/webplayer|plugin]]), standalone PC/MAC/Linux, IOS, Androïd, Blackberry, (Xbox, PS3 et Wii seulement dans sa version payante) ===== Installation ===== ==== MAC/PC ==== [[https://unity3d.com/unity/download|télécharger Unity]] ==== LINUX ==== Les jeux développés pourront fonctionner sous Linux, mais Unity lui-même n'est pour l'instant pas disponible sous Linux. Alternative pour utiliser Unity sur Linux : * Installer wine 1.7.14 dans Tools-manage wine versions * [[https://unity3d.com/unity/download|télécharger Unity]] * lancer le script [[http://reso-nance.org/wiki/data/pages/logiciels/unity/installLinux/unity.pol|unity.pol]] dans Tools-run ===== Créer un projet ===== {{.:unitygui.jpg|}} * menu file/new Project * cocher import **Character Controller.unityPackage** (contient le nécessaire pour un jeu type "first personne controller". * cocher import **Skyboxes.unityPackage** (collection de visuels cieux panoramiques a pour envelopper la scene). * conserver set up defaults for "3D" Ces ressources se retrouveront dans la fenetre Projet ou s'additionnera par la suite les futures ressources du projet (Assets, components, audio …). ==== propriété du projet ==== sélectionner menu **Window/layouts/2by3**, modifie l'affichage de l'interface graphique intégrant une vue "game" ===Edit/Project Setting/physics :=== pour spécifier/modifier les paramètres physics généraux, (ex.: simuler du vent en donnant une valeur non nulle en x ou z des champs gravité) ===Edit/Render Setting :=== Specifie les caracteristiques du "monde" (ex. : clic sur le rond a droite du champ skybox material pour choisir un ciel parmis ceux fournis par Skyboxes.unityPackage) ==== Sauvegarder la premiere scene ==== * **file / save scene as…** : l'icone de votre scene apparait dans la fenêtre **Assets**, qui recense toutes les ressources du projet. * seul les élements utilisés dans la scene sont listés dans la fenetre **hierarchie** ===== Créer une composition (GameObject) ===== ==== creer un terrain ==== Unity permet de sculpter des objects sommaires: ex.: le gameObject Terrrain * menu **GameObject/Create Other/Terrain** * sélectionner le terrain depuis la fenetre **Hierarchy** * depuis la fenêtre **Inspector**, menu **Terrain script**, pour scuplter le terrain… * selectionner le pinceau dans les outils du menu **Terrain script** le menu texture apparait, selectionner **Edit Textures/add texture** puis ajouter vos textures. * selectionner une texture chargée (affichée ds la fenetre textures de l'onglet **inspector**)pour l'appliquer avec le pinceau sur le terrain (ds la scene) * possibilité de mulitplier les textures… {{:logiciels:unity:terrain.jpg|GameObject terrain}} === exemple Tree Creator === {{:logiciels:unity:unitytreecreator.jpg|}} clic droit sur le dossier **Terrain Asset/import Package/Tree Creator** pour peindre des arbres sur le terrains cf.menu **Terrain (script)** fenetre **Inspector** ==== import objet 3D ==== Unity supporte les principaux formats 3D (.obj, .fbx, …). La fenêtre **Projet/Assets** permet d'organiser les dossiers par types. Clic droit sur le picto dossier Asset ** Asset/import new Asset… ** (mise à jour automatique du dossier, possibilité de créer les dossiers, coller les objects directement depuis le bureau/finder). * une fois le modèle présent dans la fenetre **Projet/Assets**, drag/drop du modèle vers la fenêtre **Hierarchie**, une occurence de l'objet est présent sur scène. * :!: l'objet peut être trop petit/grand pour etre vu… (tester en modifiant le scale) ce parametre peut être modifié dans la fenêtre **inspector/model/select** ==== manipuler les objets ==== * double clic sur un objet depuis la fenetre hierarchie >> zoom sur l'objet sur la scène * la fenêtre "Inspector" permet de renommer votre occurence, la positionner et la redimensionner et affiche l'ensemble des materieux, components, effets qui lui seront ajoutés ==== Asset/Create/Material ==== * un new Material apprait dans la fenetre **Projet**, renommer le dans l'entete de la fenetre **Inspector** * selectionner un mode shader * selectionner les textures (les images placées dans le dossier du Asset du projet sont automatiquement referencée) ==== mapping objet ==== * fenetre **Hierarchie** ou **Project/Asset** selectionner un mesh :!: un mesh peut en contenir plusieurs, la logique de parentée ne s'applique pas au textures… traiter les objets composites mesh par mesh) * selectionner votre material depuis la fenetre **Projet** et drag/drop sur le mesh dans la fenetre **Hierarchie**. {{:logiciels:unity:unitytexture.jpg|}} ===== Animation ===== ==== Physics ==== * selectionner un mesh (fenetre hierarchie / object/un mesh composant l'objet) * fenetre **Hierarchie**, bouton **Add component/Physics/Rigidbody** … l'objet est soumis a la pesenteur (définie dans menu **Edit/Project Settings/Physics**) * puis bouton **Add component/Physics/BoxCollider** … * Ajouter un collider au terrain : **Add component/Physics/TerrainCollider** * jouer la scène (bouton Play)… Une fois l'objet aboutie (size,position dans la scene, material, texture, component etc…) menu **Assets/Create/Prefab** puis dragdrop de l'objet sur le prefab permet de combiner tous ses attributs en un "prefab" (en vue de la scene suivante par exemple…) ==== First Person Controller ==== * menu **Asset/import Package/Character Controller** (si le package n'est pas deja dans le dossier **Asset/Standard Asset**) * selectionner le dossier **Character Controller** et poser un **first person controller** dans la fenetre **Hierarchie**. Cet objet contient lui meme une camera, un Capsule Collider par defaut, et les scrpits pour pilotage au clavier/souris éditable depuis le menu **Inspector** ==== Audio Component ==== * menu **Inspector** d'un objet, puis **Add Component/Audio/Audio source**. * Selecteur **2D/3D:** un son 3D est spacialisé en fonction de l'objet auquel il est attaché, du sujet, etc. cf parametres menu **Inspector**, décocher 3d pour créer un son d'ambiance, permanent, toujours a egale distance du sujet quel que soit sa position dans la scène. ====Physic Material ==== * menu **Asset/Create/Physic Material** * jouer avec les parametres du physic body (rebond ds bouncyness etc.) * dans le menu *Box Collider* champ *Material* : selectionner votre Physic Material. ====Script ==== Ajout d'un script [[http://reso-nance.org/files/ressources/unity/scripts/PlaySoundAtCollision_single.cs|**PlaySoundAtCollision_single.cs**]] pour coller un son au évènement collision du GameObject. using UnityEngine; using System.Collections; //copier et nommer ce script PlaySoundAtCollision_single.cs à integrer dans Asset/Scripts //(créer le dossier "script" si nécessaire. public class playSoundAtCollision_single : MonoBehaviour { // audio clip public AudioClip mySoundClip; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnCollisionEnter( Collision collision ) { // Play a sound clip audio.Play (); //print (collision.relativeVelocity.y); //audio.pitch = .5+ collision.relativeVelocity.y/15; } } * sélectionner un gameObject dans la scène * puis menu **Asset/Create/Audio/AudioSource** sélectionner un ficher audio * puis menu **Asset/Create/Script** * sélectionner le fichier **PlaySoundAtCollision_single.cs** sans spécifier le champ **my sound Clip**, le script jouera le fichier selectionné depuis **Audio Source** * tester …