From 59dee4c688b7862a681a9dc3e25a23ef6b0c5e1d Mon Sep 17 00:00:00 2001 From: Gregory Campbell Date: Thu, 23 Apr 2020 21:07:59 -0400 Subject: [PATCH] Reworked hit effect animation on both sides so that all animations are cleaner and in unison --- Assets/Scripts/GMScript.cs | 126 ++++++++++++++++++++++--------------- 1 file changed, 74 insertions(+), 52 deletions(-) diff --git a/Assets/Scripts/GMScript.cs b/Assets/Scripts/GMScript.cs index 3826ca9..8b1efa2 100644 --- a/Assets/Scripts/GMScript.cs +++ b/Assets/Scripts/GMScript.cs @@ -364,14 +364,13 @@ public class GMScript : MonoBehaviour } - IEnumerator HitEffectParty(Colours partyMember) + IEnumerator HitEffectParty(int damage, Text display, Colours partyMember) { //CHECKING IF AN "ATTACK" OR "NON-ATTACK" ROBOT IS GOING - if((partyMember != Colours.Grey && + if(partyMember != Colours.Grey && partyMember != Colours.White && partyMember != Colours.Black) - && shield != true && enemyShield != true) { Hit.transform.GetComponent().color = @@ -383,18 +382,29 @@ public class GMScript : MonoBehaviour Hit.transform.GetChild(0).GetComponent().color = SetColour((int)partyMember); - Hit.SetActive(true); + DisplayDamageText((int)damage, display, partyMember); + + if(!shield && !enemyShield) + { + Hit.SetActive(true); - Animator hit = Hit.transform.GetComponent(); - hit.SetTrigger("HitTrigger"); + Animator hit = Hit.transform.GetComponent(); + hit.SetTrigger("HitTrigger"); - yield return new WaitForSeconds( - hit.GetCurrentAnimatorStateInfo(0).length - +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); + yield return new WaitForSeconds( + hit.GetCurrentAnimatorStateInfo(0).length * 2 + +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); + + hit.SetTrigger("HitTrigger"); + Hit.SetActive(false); + } else { + + yield return new WaitForSeconds(1); + + } + + display.text = null; - Hit.SetActive(false); - hit.SetTrigger("HitTrigger"); - } // GREY ROBOT (SHIELD) IS GOING @@ -421,23 +431,28 @@ public class GMScript : MonoBehaviour EnemyHit.transform.GetChild(0).GetComponent().color = SetColour((int)partyMember); + if(partyMember == Colours.White) DisplayDamageText((int)damage, display, partyMember); EnemyHit.SetActive(true); Animator hit = EnemyHit.transform.GetComponent(); hit.SetTrigger("HitTrigger"); yield return new WaitForSeconds( - hit.GetCurrentAnimatorStateInfo(0).length + hit.GetCurrentAnimatorStateInfo(0).length * 2 +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); - EnemyHit.SetActive(false); hit.SetTrigger("HitTrigger"); - + EnemyHit.SetActive(false); + display.text = null; + } + ShieldHit.SetActive(false); + WeakPointHit.SetActive(false); + } - IEnumerator HitEffectEnemy(int attackColour) + IEnumerator HitEffectEnemy(int attack, int attackColour) { EnemyHit.transform.GetComponent().color = @@ -462,17 +477,23 @@ public class GMScript : MonoBehaviour Hit.transform.GetChild(0).GetComponent().color = SetColour(attackColour); + if((Colours)attackColour == Colours.White) + { + DisplayDamageText(attack, EnemyDamageText, (Colours)attackColour); + } Hit.SetActive(true); Animator hit = Hit.transform.GetComponent(); hit.SetTrigger("HitTrigger"); yield return new WaitForSeconds( - hit.GetCurrentAnimatorStateInfo(0).length + hit.GetCurrentAnimatorStateInfo(0).length * 2 +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); - Hit.SetActive(false); hit.SetTrigger("HitTrigger"); + EnemyDamageText.text = null; + Hit.SetActive(false); + } // ENEMY SHIELD GOES UP IF @@ -486,27 +507,39 @@ public class GMScript : MonoBehaviour } //HIT EFFECT ONLY WORKS IF THERE IS NO SHIELD UP - if(!shield && !enemyShield - && (Colours)attackColour != Colours.White && + if( (Colours)attackColour != Colours.White && (Colours)attackColour != Colours.Grey && (Colours)attackColour != Colours.Black) { - EnemyHit.SetActive(true); + DisplayDamageText(attack, PartyDamageText, (Colours)attackColour); - Animator hit = EnemyHit.transform.GetComponent(); - hit.SetTrigger("HitTrigger"); + if(!shield && !enemyShield) + { + EnemyHit.SetActive(true); - yield return new WaitForSeconds( - hit.GetCurrentAnimatorStateInfo(0).length - +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); + Animator hit = EnemyHit.transform.GetComponent(); + hit.SetTrigger("HitTrigger"); - hit.SetTrigger("HitTrigger"); + yield return new WaitForSeconds( + hit.GetCurrentAnimatorStateInfo(0).length * 2 + +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); - EnemyHit.SetActive(false); + hit.SetTrigger("HitTrigger"); + EnemyHit.SetActive(false); + } else { + + yield return new WaitForSeconds(1); + + } + + PartyDamageText.text = null; } + ShieldHit.SetActive(false); + WeakPointHit.SetActive(false); + } IEnumerator DamageParty(int partyAttack, Colours partyMember) @@ -649,13 +682,13 @@ public class GMScript : MonoBehaviour modifiedAttack = partyAttack * modifier; } - yield return StartCoroutine(HitEffectParty(partyMember)); - - if(partyMember == Colours.White) + if(partyMember == Colours.White || + partyMember == Colours.Grey || + partyMember == Colours.Black) { - yield return StartCoroutine(DisplayDamageText((int)modifiedHeal, PartyDamageText, partyMember)); - } else if(partyMember != Colours.Grey && partyMember != Colours.Black){ - yield return StartCoroutine(DisplayDamageText((int)modifiedAttack, EnemyDamageText, partyMember)); + yield return StartCoroutine(HitEffectParty((int)modifiedHeal, PartyDamageText, partyMember)); + } else{ + yield return StartCoroutine(HitEffectParty((int)modifiedAttack, EnemyDamageText, partyMember)); enemyShield = false; } @@ -716,13 +749,9 @@ public class GMScript : MonoBehaviour buff = false; - yield return StartCoroutine(HitEffectEnemy(attackColour)); - yield return StartCoroutine(DisplayDamageText(modifiedAttack, PartyDamageText, (Colours)attackColour)); + yield return StartCoroutine(HitEffectEnemy((int)modifiedAttack, attackColour)); - if(shield) - { - shield = false; - } + shield = false; partyHealth -= modifiedAttack; print((Colours)attackColour + " enemy robot arm attacked for " + modifiedAttack); @@ -730,7 +759,7 @@ public class GMScript : MonoBehaviour } - IEnumerator DisplayDamageText(int damage, Text display, Colours displayColour) + void DisplayDamageText(int damage, Text display, Colours displayColour) { display.color = SetColour((int)displayColour); @@ -748,13 +777,6 @@ public class GMScript : MonoBehaviour WeakPointHit.SetActive(true); } - yield return new WaitForSeconds(1); - - ShieldHit.SetActive(false); - WeakPointHit.SetActive(false); - - display.text = null; - } IEnumerator AttackAnimEnemy(int arm) @@ -776,7 +798,7 @@ public class GMScript : MonoBehaviour // BEFORE THE ENEMY DOES ITS ATTACK ANIMATION if((Colours)EnemyPartsColours[0] == Colours.Black) { - yield return StartCoroutine(HitEffectEnemy(EnemyPartsColours[0])); + yield return StartCoroutine(HitEffectEnemy(0, EnemyPartsColours[0])); } } @@ -787,13 +809,13 @@ public class GMScript : MonoBehaviour if((Colours)EnemyPartsColours[0] == Colours.White) { enemyHealth += 2; - yield return StartCoroutine(HitEffectEnemy(EnemyPartsColours[0])); - StartCoroutine(DisplayDamageText(2, EnemyDamageText, (Colours)EnemyPartsColours[0])); + yield return StartCoroutine(HitEffectEnemy(2, EnemyPartsColours[0])); + //StartCoroutine(DisplayDamageText(2, EnemyDamageText, (Colours)EnemyPartsColours[0])); } if((Colours)EnemyPartsColours[0] == Colours.Grey) { - yield return StartCoroutine(HitEffectEnemy(EnemyPartsColours[0])); + yield return StartCoroutine(HitEffectEnemy(0, EnemyPartsColours[0])); } }