UNITY 3D

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 plugin), standalone PC/MAC/Linux, IOS, Androïd, Blackberry, (Xbox, PS3 et Wii seulement dans sa version payante)

Installation

MAC/PC

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 :

Créer un projet

  • 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…

GameObject terrain

exemple Tree Creator

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.

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 **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 …