Added a SHIT TON of polish to the animation sequencing to make everything much cleaner and clearer
This commit is contained in:
+110
-69
@@ -290,7 +290,7 @@ public class GMScript : MonoBehaviour
|
|||||||
//print(robotColour);
|
//print(robotColour);
|
||||||
|
|
||||||
//PARTY MEMEBER ATTACKING ENEMY
|
//PARTY MEMEBER ATTACKING ENEMY
|
||||||
DamageParty(partyAttack, robotColour);
|
yield return DamageParty(partyAttack, robotColour);
|
||||||
}
|
}
|
||||||
|
|
||||||
// CLEAN UP IN CASE ANYTHING IS MISSED
|
// CLEAN UP IN CASE ANYTHING IS MISSED
|
||||||
@@ -307,25 +307,30 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StartCoroutine(AttackEnemy());
|
yield return StartCoroutine(AttackEnemy());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerator AttackEnemy()
|
IEnumerator AttackEnemy()
|
||||||
{
|
{
|
||||||
|
|
||||||
// RUNS ATTACK ANIMATION OF ENEMY
|
// PRE ATTACK BUFF EFFECT ANIMATION
|
||||||
Animator enemyAttackAnim = EnemyParts[2].transform.parent.GetComponent<Animator>();
|
yield return StartCoroutine(PreAttackBuffAnimEnemy());
|
||||||
enemyAttackAnim.SetTrigger("AttackTrigger");
|
|
||||||
|
|
||||||
yield return new WaitForSeconds(
|
// ANIMATION FOR FIRST ARM
|
||||||
enemyAttackAnim.GetCurrentAnimatorStateInfo(0).length
|
yield return StartCoroutine(AttackAnimEnemy());
|
||||||
+enemyAttackAnim.GetCurrentAnimatorStateInfo(0).normalizedTime);
|
|
||||||
|
|
||||||
enemyAttackAnim.SetTrigger("AttackTrigger");
|
// FIRST ARM EFFECT ANIMATION AND DAMAGE CALCULATIONS
|
||||||
|
yield return StartCoroutine(DamageEnemy(enemyAttack, EnemyPartsColours[3]));
|
||||||
|
|
||||||
//ENEMY ATTACKING PARTY (DEFAULT DISPLAY TEXT TO RED FOR NOW)
|
// ANIMATION FOR SECOND ARM
|
||||||
DamageEnemy(enemyAttack, Colours.Red);
|
yield return StartCoroutine(AttackAnimEnemy());
|
||||||
|
|
||||||
|
// SECOND ARM EFFECT ANIMATION AND DAMAGE CALCULATIONS
|
||||||
|
yield return StartCoroutine(DamageEnemy(enemyAttack, EnemyPartsColours[4]));
|
||||||
|
|
||||||
|
// POST ATTACK ABILITY EFFECT ANIMATION
|
||||||
|
yield return StartCoroutine(PostAttackBuffAnimEnemy());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -402,30 +407,30 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerator HitEffectEnemy()
|
IEnumerator HitEffectEnemy(int attackColour)
|
||||||
{
|
{
|
||||||
|
|
||||||
EnemyHit.transform.GetComponent<SpriteRenderer>().color =
|
EnemyHit.transform.GetComponent<SpriteRenderer>().color =
|
||||||
SetColour(EnemyPartsColours[3]);
|
SetColour(attackColour);
|
||||||
|
|
||||||
EnemyHit.transform.GetChild(0).GetComponent<SpriteRenderer>().sprite =
|
EnemyHit.transform.GetChild(0).GetComponent<SpriteRenderer>().sprite =
|
||||||
Symbols[EnemyPartsColours[3]];
|
Symbols[attackColour];
|
||||||
|
|
||||||
EnemyHit.transform.GetChild(0).GetComponent<SpriteRenderer>().color =
|
EnemyHit.transform.GetChild(0).GetComponent<SpriteRenderer>().color =
|
||||||
SetColour(EnemyPartsColours[3]);
|
SetColour(attackColour);
|
||||||
|
|
||||||
if((Colours)EnemyPartsColours[0] == Colours.White ||
|
if((Colours)attackColour == Colours.White ||
|
||||||
(Colours)EnemyPartsColours[0] == Colours.Grey ||
|
(Colours)attackColour == Colours.Grey ||
|
||||||
(Colours)EnemyPartsColours[0] == Colours.Black)
|
(Colours)attackColour == Colours.Black)
|
||||||
{
|
{
|
||||||
Hit.transform.GetComponent<SpriteRenderer>().color =
|
Hit.transform.GetComponent<SpriteRenderer>().color =
|
||||||
SetColour(EnemyPartsColours[0]);
|
SetColour(attackColour);
|
||||||
|
|
||||||
Hit.transform.GetChild(0).GetComponent<SpriteRenderer>().sprite =
|
Hit.transform.GetChild(0).GetComponent<SpriteRenderer>().sprite =
|
||||||
Symbols[EnemyPartsColours[0]];
|
Symbols[attackColour];
|
||||||
|
|
||||||
Hit.transform.GetChild(0).GetComponent<SpriteRenderer>().color =
|
Hit.transform.GetChild(0).GetComponent<SpriteRenderer>().color =
|
||||||
SetColour(EnemyPartsColours[0]);
|
SetColour(attackColour);
|
||||||
|
|
||||||
Hit.SetActive(true);
|
Hit.SetActive(true);
|
||||||
|
|
||||||
@@ -441,17 +446,20 @@ public class GMScript : MonoBehaviour
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ENEMY SHIELD GOES UP IF
|
// ENEMY SHIELD GOES UP IF
|
||||||
if ((Colours)EnemyPartsColours[0] == Colours.Grey){
|
if ((Colours)attackColour == Colours.Grey){
|
||||||
|
|
||||||
enemyShield = true;
|
enemyShield = true;
|
||||||
EnemyShield.transform.GetComponent<SpriteRenderer>().color =
|
EnemyShield.transform.GetComponent<SpriteRenderer>().color =
|
||||||
SetColour(EnemyPartsColours[0]);
|
SetColour(attackColour);
|
||||||
EnemyShield.SetActive(true);
|
EnemyShield.SetActive(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//HIT EFFECT ONLY WORKS IF THERE IS NO SHIELD UP
|
//HIT EFFECT ONLY WORKS IF THERE IS NO SHIELD UP
|
||||||
if(!shield && !enemyShield)
|
if(!shield && !enemyShield
|
||||||
|
&& (Colours)attackColour != Colours.White &&
|
||||||
|
(Colours)attackColour != Colours.Grey &&
|
||||||
|
(Colours)attackColour != Colours.Black)
|
||||||
{
|
{
|
||||||
|
|
||||||
EnemyHit.SetActive(true);
|
EnemyHit.SetActive(true);
|
||||||
@@ -467,35 +475,16 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
EnemyHit.SetActive(false);
|
EnemyHit.SetActive(false);
|
||||||
|
|
||||||
EnemyHit.transform.GetComponent<SpriteRenderer>().color =
|
|
||||||
SetColour(EnemyPartsColours[4]);
|
|
||||||
|
|
||||||
EnemyHit.transform.GetChild(0).GetComponent<SpriteRenderer>().sprite =
|
|
||||||
Symbols[EnemyPartsColours[4]];
|
|
||||||
|
|
||||||
EnemyHit.transform.GetChild(0).GetComponent<SpriteRenderer>().color =
|
|
||||||
SetColour(EnemyPartsColours[4]);
|
|
||||||
|
|
||||||
EnemyHit.SetActive(true);
|
|
||||||
|
|
||||||
hit.SetTrigger("HitTrigger");
|
|
||||||
|
|
||||||
yield return new WaitForSeconds(
|
|
||||||
hit.GetCurrentAnimatorStateInfo(0).length
|
|
||||||
+hit.GetCurrentAnimatorStateInfo(0).normalizedTime);
|
|
||||||
|
|
||||||
EnemyHit.SetActive(false);
|
|
||||||
hit.SetTrigger("HitTrigger");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DamageParty(int partyAttack, Colours partyMember)
|
IEnumerator DamageParty(int partyAttack, Colours partyMember)
|
||||||
{
|
{
|
||||||
|
|
||||||
float modifier = 1.0f;
|
float modifier = 1.0f;
|
||||||
float modifiedAttack = 2.0f;
|
float modifiedAttack = 2.0f;
|
||||||
|
float modifiedHeal = 0f;
|
||||||
int colourModifier = ColourCompare(partyMember, (Colours)EnemyPartsColours[2]);
|
int colourModifier = ColourCompare(partyMember, (Colours)EnemyPartsColours[2]);
|
||||||
|
|
||||||
// ATTACK MODIFIER BASED ON THE RELATION OF THE COLOUR OF THE PARTY MEMBER
|
// ATTACK MODIFIER BASED ON THE RELATION OF THE COLOUR OF THE PARTY MEMBER
|
||||||
@@ -573,23 +562,21 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
if(buff)
|
if(buff)
|
||||||
{
|
{
|
||||||
modifiedAttack = (partyAttack * modifier) * 2;
|
modifiedHeal = (partyAttack * modifier) * 2;
|
||||||
} else {
|
} else {
|
||||||
modifiedAttack = partyAttack * modifier;
|
modifiedHeal = partyAttack * modifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
partyHealth += (int)modifiedAttack;
|
partyHealth += (int)modifiedHeal;
|
||||||
|
|
||||||
StartCoroutine(DisplayDamageText((int)modifiedAttack, PartyDamageText, partyMember));
|
print(partyMember + " healed the team for " + modifiedHeal + " HP");
|
||||||
|
|
||||||
print(partyMember + " healed the team for 4");
|
|
||||||
print("Party health is now: " + partyHealth + " HP");
|
print("Party health is now: " + partyHealth + " HP");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(partyMember == Colours.Black)
|
if(partyMember == Colours.Black)
|
||||||
{
|
{
|
||||||
StartCoroutine(DisplayDamageText(0, PartyDamageText, partyMember));
|
|
||||||
|
|
||||||
print(partyMember + " buffed the team!");
|
print(partyMember + " buffed the team!");
|
||||||
print("Party health is now: " + partyHealth + " HP");
|
print("Party health is now: " + partyHealth + " HP");
|
||||||
@@ -603,7 +590,10 @@ public class GMScript : MonoBehaviour
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ATTACKS ARE BLOCK IF SHIELD IS UP
|
// ATTACKS ARE BLOCK IF SHIELD IS UP
|
||||||
if(shield || enemyShield)
|
if(shield || enemyShield &&
|
||||||
|
(partyMember != Colours.White
|
||||||
|
&& partyMember != Colours.Grey
|
||||||
|
&& partyMember != Colours.Black))
|
||||||
{
|
{
|
||||||
modifier = 0;
|
modifier = 0;
|
||||||
|
|
||||||
@@ -616,6 +606,9 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IN CASE MODIFIER IS NEGATIVE
|
||||||
|
if(modifier < 0) modifier = 0;
|
||||||
|
|
||||||
// ATTACKS ARE DOUBLE DAMAGE IF BLACK ROBOT HAS DONE ITS ACTION
|
// ATTACKS ARE DOUBLE DAMAGE IF BLACK ROBOT HAS DONE ITS ACTION
|
||||||
if(buff)
|
if(buff)
|
||||||
{
|
{
|
||||||
@@ -624,8 +617,16 @@ public class GMScript : MonoBehaviour
|
|||||||
modifiedAttack = partyAttack * modifier;
|
modifiedAttack = partyAttack * modifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
StartCoroutine(HitEffectParty(partyMember));
|
yield return StartCoroutine(HitEffectParty(partyMember));
|
||||||
StartCoroutine(DisplayDamageText((int)modifiedAttack, EnemyDamageText, partyMember));
|
|
||||||
|
if(partyMember == Colours.White)
|
||||||
|
{
|
||||||
|
yield return StartCoroutine(DisplayDamageText((int)modifiedHeal, PartyDamageText, partyMember));
|
||||||
|
} else if(partyMember == Colours.Black) {
|
||||||
|
yield return StartCoroutine(DisplayDamageText(0, PartyDamageText, partyMember));
|
||||||
|
} else {
|
||||||
|
yield return StartCoroutine(DisplayDamageText((int)modifiedAttack, EnemyDamageText, partyMember));
|
||||||
|
}
|
||||||
|
|
||||||
enemyHealth -= (int)modifiedAttack;
|
enemyHealth -= (int)modifiedAttack;
|
||||||
print(partyMember + " robot attacked for " + modifiedAttack);
|
print(partyMember + " robot attacked for " + modifiedAttack);
|
||||||
@@ -633,7 +634,7 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DamageEnemy(int enemyAttack, Colours enemyColour)
|
IEnumerator DamageEnemy(int enemyAttack, int attackColour)
|
||||||
{
|
{
|
||||||
|
|
||||||
int modifier = 0;
|
int modifier = 0;
|
||||||
@@ -643,25 +644,25 @@ public class GMScript : MonoBehaviour
|
|||||||
for(int j = 0; j < partySize; j++){
|
for(int j = 0; j < partySize; j++){
|
||||||
|
|
||||||
modifier +=
|
modifier +=
|
||||||
ColourCompare((Colours)EnemyPartsColours[3+i], (Colours)PartyColours[j]);
|
ColourCompare((Colours)attackColour, (Colours)PartyColours[j]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ADD DAMAGE IF EITHER OF THE ARMS MATCHES THE COLOUR OF THE ANTENNA
|
// ADD DAMAGE IF EITHER OF THE ARMS MATCHES THE COLOUR OF THE ANTENNA
|
||||||
if(EnemyPartsColours[0] == EnemyPartsColours[3]) modifier += 2;
|
if(EnemyPartsColours[0] == attackColour)
|
||||||
if(EnemyPartsColours[0] == EnemyPartsColours[4]) modifier += 2;
|
{
|
||||||
|
print("Antenna Buff!");
|
||||||
|
modifier += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IN CASE MODIFIER MAKES ENEMY ATTACK NEGATIVE
|
||||||
|
if(modifier < -enemyAttack) modifier = -enemyAttack;
|
||||||
|
|
||||||
modifiedAttack = enemyAttack + modifier;
|
modifiedAttack = enemyAttack + modifier;
|
||||||
|
|
||||||
// RUN "NON-ATTACK" ABILITIES FOR ENEMY IF ANTENNA IS WHITE, GREY OR BLACK RESPECTIVELY
|
// RUN "NON-ATTACK" BUFF FOR ENEMY IF ANTENNA IS BLACK SO ATTACKS ARE BUFFED
|
||||||
if((Colours)EnemyPartsColours[0] == Colours.White)
|
|
||||||
{
|
|
||||||
enemyHealth += 2;
|
|
||||||
StartCoroutine(DisplayDamageText(2, EnemyDamageText, (Colours)EnemyPartsColours[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
if((Colours)EnemyPartsColours[0] == Colours.Black)
|
if((Colours)EnemyPartsColours[0] == Colours.Black)
|
||||||
{
|
{
|
||||||
modifiedAttack *= 2;
|
modifiedAttack *= 2;
|
||||||
@@ -680,11 +681,11 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
buff = false;
|
buff = false;
|
||||||
|
|
||||||
StartCoroutine(HitEffectEnemy());
|
yield return StartCoroutine(HitEffectEnemy(attackColour));
|
||||||
StartCoroutine(DisplayDamageText(modifiedAttack, PartyDamageText, enemyColour));
|
yield return StartCoroutine(DisplayDamageText(modifiedAttack, PartyDamageText, (Colours)attackColour));
|
||||||
|
|
||||||
partyHealth -= modifiedAttack;
|
partyHealth -= modifiedAttack;
|
||||||
print(enemyColour + " enemy robot attacked for " + modifiedAttack);
|
print((Colours)attackColour + " enemy robot arm attacked for " + modifiedAttack);
|
||||||
print("Party health is now: " + partyHealth + " HP");
|
print("Party health is now: " + partyHealth + " HP");
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -701,6 +702,46 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IEnumerator AttackAnimEnemy()
|
||||||
|
{
|
||||||
|
// RUNS ATTACK ANIMATION OF ENEMY
|
||||||
|
Animator enemyAttackAnim = EnemyParts[2].transform.parent.GetComponent<Animator>();
|
||||||
|
enemyAttackAnim.SetTrigger("AttackTrigger");
|
||||||
|
|
||||||
|
yield return new WaitForSeconds(
|
||||||
|
enemyAttackAnim.GetCurrentAnimatorStateInfo(0).length
|
||||||
|
+enemyAttackAnim.GetCurrentAnimatorStateInfo(0).normalizedTime);
|
||||||
|
|
||||||
|
enemyAttackAnim.SetTrigger("AttackTrigger");
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator PreAttackBuffAnimEnemy()
|
||||||
|
{
|
||||||
|
// RUN "NON-ATTACK" BUFF ANIMATION FOR ENEMY IF ANTENNA IS BLACK SO ATTACKS ARE BUFFED
|
||||||
|
// BEFORE THE ENEMY DOES ITS ATTACK ANIMATION
|
||||||
|
if((Colours)EnemyPartsColours[0] == Colours.Black)
|
||||||
|
{
|
||||||
|
yield return StartCoroutine(HitEffectEnemy(EnemyPartsColours[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator PostAttackBuffAnimEnemy()
|
||||||
|
{
|
||||||
|
// RUN "NON-ATTACK" ABILITY ANIMATION FOR ENEMY IF ANTENNA IS WHITE OR GREY RESPECTIVELY
|
||||||
|
// NOW SO THESE ANIMATIONS APPEAR AFTER THE ENEMY IS DONE ATTACKING
|
||||||
|
if((Colours)EnemyPartsColours[0] == Colours.White)
|
||||||
|
{
|
||||||
|
enemyHealth += 2;
|
||||||
|
yield return StartCoroutine(HitEffectEnemy(EnemyPartsColours[0]));
|
||||||
|
StartCoroutine(DisplayDamageText(2, EnemyDamageText, (Colours)EnemyPartsColours[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
if((Colours)EnemyPartsColours[0] == Colours.Grey)
|
||||||
|
{
|
||||||
|
yield return StartCoroutine(HitEffectEnemy(EnemyPartsColours[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void EnemyBuilder()
|
void EnemyBuilder()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user