Unity 3D Game Engine – Animator Scripting
Animator class brings to life your characters!
Think about that:
1. Hierarchy> select your character> Inspector
– Transform
– Animator Component
— Animator Controller (animations scripts)
— Animator Avatar (rig informations)
– YourCharacterScript.JS
2. Open — Animator Controller> Animator Window> Animation Clips
Idle <-> Walk <-> Run <-> Jump
Parameters: Speed |float value|
Jump |trigger (checkbox – innesco)|
NOTICE: the character will jump ONLY if it is running
Il personaggio può saltare solamente se stà correndo
3. YourCharacterScript.JS
#pragma strict var anim : Animator; // creo una variabile per richiamare la classe Animator // conversione in Hash, Hash è un valore intero univoco che rappresenta una specifica stringa // ottiene il parametro Jump e lo converte in Hash var jumpHash : int = Animator.StringToHash("Jump"); // ottiene dal layer Base, Run e lo converte in Hash. Specifico anche il Layer di appartenenza perchè potrebbe esistere su un'altro layer una clip di animazione Run var runStateHash : int = Animator.StringToHash("Base Layer.Run"); function Start () { anim = GetComponent("Animator"); // ottiene Animator Controller attaccato all'oggetto } function Update () { var move : float = Input.GetAxis ("Vertical"); // rileva i dati di input utente, questo valore va da -1 a 1 anim.SetFloat("Speed", move); // il valore rilevato da Input.GetAxis viene assegnato a Speed di Animator Controller // con l'aumentare di speed lo stato passerà da Statico a Camminata a Corsa // ottiene le info di stato dal layer di base, indicizzato 0 zero, capisce quale clip di animazione è attivo var stateInfo : AnimatorStateInfo = anim.GetCurrentAnimatorStateInfo(0); // se viene premuto il tasto barra spazio AND lo stato corrente è la corsa... if(Input.GetKeyDown(KeyCode.Space) && stateInfo.nameHash == runStateHash) { // ... viene avviata l'animazione del salto // il personaggio potrà saltare solo se stà già correndo anim.SetTrigger (jumpHash); } }