Je vous propose mon tout premier tuto : créer un piano dans Unity3d!
Ce tuto est fortement inspiré du tuto de quill18creates (disponible en anglais sur Youtube),
je vais cependant corriger quelques erreurs et le traduire en français.
Donc voilà comment ça va se passer :
On va créer les touches d'un piano, et surtout le son qui va avec.
Pour cela on utilisera un seul fichier son et un script très simple.
On ne va pas s'attaquer à la modélisation du piano ni à d'éventuelles applications de ce
tuto, je laisse libre cours à votre imagination.
Commençons!
On a donc besoin d'un fichier son, c'est la note Do (télécharger http://adf.ly/1Nuobd).
Dans Unity, on crée une touche à partir d'un simple cube qu'on place dans la scène et on y ajoute le fichier son.
Si tout va bien jusque là vous pouvez lancer le jeu et la note se joue toute seule. Mais ce n'est
pas ce qu'on veut alors désactivez PlayOnAwake dans l'audio source de votre objet.
Maintenant on crée un script (en c# pour moi) qu'on attache à notre cube.
On ajoute ceci dans notre script :
- Une variable :
Code : Tout sélectionner
public float semitone_Offset=0f;
Code : Tout sélectionner
void PlayNote(){
audio.pitch = Mathf.Pow(2f, semitone_Offset/12f);
audio.Play();
}
Code : Tout sélectionner
void OnMouseDown(){
PlayNote();
}
pour cela il n'y a qu'une valeur à modifier à chaque fois : il s'agit de semitone_Offset.
L'écart entre les notes du piano est définit par des tons et des demi-tons, notre script modifie le son en
fonction de cela (notre variable semitone_Offset représente les demi-tons).
Là où je "corrige" le travail de quill18creates c'est pour ces écarts entre les notes. Je vais tenter de vous
l'expliquer et je propose également ce lien : http://www.jerrock.com/66/notes_intervalles_degres
Pour comprendre, regardons les touches d'un piano, il y en a des blanches et des noires.
L'écart d'une touche à la suivante (en comptant les touches noires) est toujours d'un demi-ton.
Mais vous pouvez voir qu'il n'y a pas de noire entre Mi et Fa et entre Si et Do. L'écart entre ces touches
blanches est donc de seulement un demi-ton. Et c'est en fonction de ça qu'on va obtenir les valeurs de
notre variable semitone_Offset.
Donc maintenant pour créer toutes les notes il faut dupliquer votre Cube (Ctrl-D) plusieurs fois jusqu'à en avoir 13.
Il ne reste plus qu'à cliquer sur chaque Cube et modifier son semitone_Offset directement dans l'éditeur.
Si vous n'avez pas compris mon explication je vous donne les valeurs à écrire pour chaque note en partant de notre Do :
Do 0, Do# 1, Ré 2, Ré# 3, Mi 4, Fa 5, Fa# 6, Sol 7, Sol# 8, La 9, La# 10, Si 11, Do 12.
Ces valeurs représentent le nombre de demi-tons qui sépare chaque note du Do.
Et vous pouvez tout à fait mettre des valeurs négatives pour obtenir des notes plus graves.
Donc maintenant, vous pouvez disposer proprement vos cubes et lancer le jeu, puis cliquez simplement sur les touches.
Petit bonus : Vous pouvez Changer d'octave en ajoutant ou enlevant un multiple de 12 à ces valeurs.
Après je vous laisse rajouter des conditions et des calculs à votre fonction selon vos besoins,
vous pouvez faire en sorte que le son se joue par un clic, après une collision, après un certain temps...
Et voilà!
J'espère que ce tuto vous aura aidé. Si vous avez des questions j'essayerais d'y répondre.
Et n'hésitez pas à me dire si vous trouvez ce tuto clair ou non, et si il y a des points à améliorer.