Puoi risolvere questo tipo di problema con BlendTrees (in generale la sua saggia idea è quella di fare affidamento sugli alberi di fusione). L'albero di fusione è una specie di stato multi-animazione che in base a uno o più parametri (float) decide quale delle animazioni che contiene è attualmente attiva (o in alternativa l'animazione risultante può essere una miscela di più animazioni). Anche quando le animazioni non vengono mescolate, ma scambiate, lo scambio avviene a metà animazione (ovvero se l'animazione "in uscita" è al 35%, quella nuova viene riprodotta dal 35% in avanti). Dall'esterno tutto questo è nascosto come se fosse uno stato semplice / singolo.
Ad esempio, hai un albero misto con 8 animazioni sprite (inattivo con 4 direzioni principali e 4 diagonali). Ci sono 2 parametri in questo albero di fusione: "orizzontale" e "verticale". E in base a questi 2 parametri l'albero di fusione deciderà quale animazione riprodurre. In base al parametro "orizzontale" l'albero di fusione sceglierà tra l'animazione sinistra / destra e il parametro "verticale" deciderà l'animazione in alto / in basso. Quindi quando combinati avrai tutte e 8 le animazioni con le diagonali (è la stessa idea che sta dietro joypad / joystick).
È un po 'confuso, quindi, anche se StackExchange non ama i collegamenti, collegherò un breve video di esempio che ho realizzato. Notare la parte in alto a destra dello schermo. I punti grigi sono gli "stati" / animazioni e quello attivo è quello che si chiude al punto rosso. Come detto all'inizio, può essere ancora più complesso e ogni animazione ha un'influenza / forza basata sulla sua distanza dal punto rosso, risultante in una fusione tra diverse animazioni.
Dall'esterno è solo uno stato (albero misto) e quando applichi lo stesso concetto per camminare e attaccare avrai solo 3 stati collegati.
Gli alberi di fusione vengono creati facendo clic con il pulsante destro del mouse su un'area animata vuota Crea stato -> Da nuovo albero di fusione. Da lì è tutto nell'ispettore. Con l'albero di fusione selezionato è possibile selezionare il tipo di albero di fusione (1D, 2D, ecc.), Aggiungere animazioni, posizionarle (in relazione ai valori dei parametri) e selezionare i parametri di controllo.
Se vuoi maggiori informazioni su Blend Trees, ecco i video di Unity - Unite 2016 e Unity Tutorials .