From b85b18956ffee6465d3e23db701cae02adee7ccf Mon Sep 17 00:00:00 2001 From: Gregory Campbell Date: Tue, 14 Apr 2020 23:40:31 -0400 Subject: [PATCH] Added non attack abailities to enemy robot based on antenna colour as well as some attack code cleanup --- Assets/Scenes/Test Scene.unity | 104 +++++++++++++++++++++++++++++---- Assets/Scripts/GMScript.cs | 101 ++++++++++++++++++++++++++------ 2 files changed, 177 insertions(+), 28 deletions(-) diff --git a/Assets/Scenes/Test Scene.unity b/Assets/Scenes/Test Scene.unity index ab94822..906d413 100644 --- a/Assets/Scenes/Test Scene.unity +++ b/Assets/Scenes/Test Scene.unity @@ -153,6 +153,87 @@ Transform: m_Father: {fileID: 2030950432} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &66290714 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 66290716} + - component: {fileID: 66290715} + m_Layer: 0 + m_Name: EnemyShield + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!212 &66290715 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66290714} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: -1267717829 + m_SortingLayer: 3 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 65bf9c77d9d7eee4ab76ef2fe3a099e3, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 5.12, y: 2.56} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &66290716 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66290714} + m_LocalRotation: {x: 1, y: 0, z: 0, w: 0} + m_LocalPosition: {x: 0, y: -0.5, z: 0} + m_LocalScale: {x: 3.5, y: 0.5, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0} --- !u!1 &76123733 GameObject: m_ObjectHideFlags: 0 @@ -401,7 +482,7 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: -48488699 m_SortingLayer: 1 - m_SortingOrder: 2 + m_SortingOrder: 3 m_Sprite: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 @@ -1089,7 +1170,7 @@ RectTransform: m_Children: - {fileID: 1357495606} m_Father: {fileID: 0} - m_RootOrder: 12 + m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2191,7 +2272,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 15 + m_RootOrder: 16 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1144941703 GameObject: @@ -2339,7 +2420,7 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: -48488699 m_SortingLayer: 1 - m_SortingOrder: 2 + m_SortingOrder: 3 m_Sprite: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 @@ -2588,7 +2669,7 @@ RectTransform: m_Children: - {fileID: 143825029} m_Father: {fileID: 0} - m_RootOrder: 14 + m_RootOrder: 15 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3056,7 +3137,7 @@ RectTransform: m_Children: - {fileID: 151717030} m_Father: {fileID: 0} - m_RootOrder: 11 + m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3185,7 +3266,8 @@ MonoBehaviour: - {fileID: 21300000, guid: 03ee63c97936fc842b2ae42ad6694abc, type: 3} Hit: {fileID: 76123733} EnemyHit: {fileID: 253373582} - Sheild: {fileID: 1797600398} + Shield: {fileID: 1797600398} + EnemyShield: {fileID: 66290714} EnemyDamageText: {fileID: 151717031} PartyDamageText: {fileID: 1357495607} EnemyHealthText: {fileID: 1144941705} @@ -3557,7 +3639,7 @@ RectTransform: m_Children: - {fileID: 1144941704} m_Father: {fileID: 0} - m_RootOrder: 13 + m_RootOrder: 14 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3606,7 +3688,7 @@ GameObject: - component: {fileID: 1797600400} - component: {fileID: 1797600399} m_Layer: 0 - m_Name: Sheild + m_Name: Shield m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -4150,7 +4232,7 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: -48488699 m_SortingLayer: 1 - m_SortingOrder: 1 + m_SortingOrder: 2 m_Sprite: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 @@ -4198,7 +4280,7 @@ Transform: - {fileID: 1989602357} - {fileID: 2133992576} m_Father: {fileID: 0} - m_RootOrder: 16 + m_RootOrder: 17 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &2030950433 Animator: diff --git a/Assets/Scripts/GMScript.cs b/Assets/Scripts/GMScript.cs index 3fdc460..a251318 100644 --- a/Assets/Scripts/GMScript.cs +++ b/Assets/Scripts/GMScript.cs @@ -10,7 +10,8 @@ public class GMScript : MonoBehaviour public Sprite[] OrderSprites; public GameObject Hit; public GameObject EnemyHit; - public GameObject Sheild; + public GameObject Shield; + public GameObject EnemyShield; public Text EnemyDamageText; public Text PartyDamageText; @@ -29,7 +30,8 @@ public class GMScript : MonoBehaviour public Sprite[] Symbols; private bool noRepeat = true; - private bool sheild = false; + private bool shield = false; + private bool enemyShield = false; private bool buff = false; private bool gameover = false; private bool victory = false; @@ -287,7 +289,7 @@ public class GMScript : MonoBehaviour if(((Colours)PartyColours[OrderNumbers[i]-1] != Colours.Grey && (Colours)PartyColours[OrderNumbers[i]-1] != Colours.White && (Colours)PartyColours[OrderNumbers[i]-1] != Colours.Black) - && sheild != true) + && shield != true && enemyShield != true) { Hit.transform.GetComponent().color = @@ -313,13 +315,13 @@ public class GMScript : MonoBehaviour } - // GREY ROBOT (SHEILD) IS GOING + // GREY ROBOT (SHIELD) IS GOING if ((Colours)PartyColours[OrderNumbers[i]-1] == Colours.Grey){ - sheild = true; - Sheild.transform.GetComponent().color = + shield = true; + Shield.transform.GetComponent().color = SetColour(PartyColours[OrderNumbers[i]-1]); - Sheild.SetActive(true); + Shield.SetActive(true); } @@ -399,8 +401,44 @@ public class GMScript : MonoBehaviour enemyAttackAnim.SetTrigger("AttackTrigger"); - //HIT EFFECT ONLY WORKS IF THERE IS NO SHEILD UP - if(sheild == false) + if((Colours)EnemyPartsColours[0] == Colours.White || + (Colours)EnemyPartsColours[0] == Colours.Grey || + (Colours)EnemyPartsColours[0] == Colours.Black) + { + Hit.transform.GetComponent().color = + SetColour(EnemyPartsColours[0]); + + Hit.transform.GetChild(0).GetComponent().sprite = + Symbols[EnemyPartsColours[0]]; + + Hit.transform.GetChild(0).GetComponent().color = + SetColour(EnemyPartsColours[0]); + + Hit.SetActive(true); + + Animator hit = Hit.transform.GetComponent(); + hit.SetTrigger("HitTrigger"); + + yield return new WaitForSeconds( + hit.GetCurrentAnimatorStateInfo(0).length + +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); + + Hit.SetActive(false); + hit.SetTrigger("HitTrigger"); + } + + // ENEMY SHIELD GOES UP IF + if ((Colours)EnemyPartsColours[0] == Colours.Grey){ + + enemyShield = true; + EnemyShield.transform.GetComponent().color = + SetColour(EnemyPartsColours[0]); + EnemyShield.SetActive(true); + + } + + //HIT EFFECT ONLY WORKS IF THERE IS NO SHIELD UP + if(!shield && !enemyShield) { EnemyHit.SetActive(true); @@ -456,15 +494,19 @@ public class GMScript : MonoBehaviour { case(2): modifier = 2; + if((Colours)EnemyPartsColours[1] == (Colours)EnemyPartsColours[2]) modifier = 4; break; case(1): modifier = 1.5f; + if((Colours)EnemyPartsColours[1] == (Colours)EnemyPartsColours[2]) modifier = 2; break; case(-1): modifier = 0.5f; + if((Colours)EnemyPartsColours[1] == (Colours)EnemyPartsColours[2]) modifier = 0; break; case(-2): modifier = 0; + if((Colours)EnemyPartsColours[1] == (Colours)EnemyPartsColours[2]) modifier = -1; break; default: break; @@ -473,7 +515,8 @@ public class GMScript : MonoBehaviour // DETERMINING A SEQUENCE BREAK ABSED ON THE NEXT COLOUR IN THE SEQUENCE // IF IT'S THE LAST COLOUR THE ROBOT IS DESTROYED // IF NOT COLOURS AND SPRITES AND CHANGED ACCORDINGLY - if(ColourCompare(partyMember, (Colours)EnemyKillSequence[0]) > 0 && !sheild) + if(ColourCompare(partyMember, (Colours)EnemyKillSequence[0]) > 0 + && !shield && !enemyShield) { print("Weakness hit!"); @@ -545,10 +588,18 @@ public class GMScript : MonoBehaviour } - // ATTACKS ARE BLOCK IF SHEILD IS UP - if(sheild == true) + // ATTACKS ARE BLOCK IF SHIELD IS UP + if(shield || enemyShield) { modifier = 0; + + if(enemyShield) + { + print("Enemy Shield Hit!"); + EnemyShield.SetActive(false); + enemyShield = false; + } + } // ATTACKS ARE DOUBLE DAMAGE IF BLACK ROBOT HAS DONE ITS ACTION @@ -583,16 +634,32 @@ public class GMScript : MonoBehaviour } + // ADD DAMAGE IF EITHER OF THE ARMS MATCHES THE COLOUR OF THE ANTENNA + if(EnemyPartsColours[0] == EnemyPartsColours[3]) modifier += 2; + if(EnemyPartsColours[0] == EnemyPartsColours[4]) modifier += 2; + modifiedAttack = enemyAttack + modifier; - //HIT ONLY DAMAGES IF THERE IS NO SHEILD UP - if(sheild == true) + // RUN "NON-ATTACK" ABILITIES FOR ENEMY IF ANTENNA IS WHITE, GREY OR BLACK RESPECTIVELY + if((Colours)EnemyPartsColours[0] == Colours.White) + { + enemyHealth += 2; + StartCoroutine(DisplayDamageText(2, EnemyDamageText, (Colours)EnemyPartsColours[0])); + } + + if((Colours)EnemyPartsColours[0] == Colours.Black) + { + modifiedAttack *= 2; + } + + //HIT ONLY DAMAGES IF THERE IS NO SHIELD UP + if(shield == true) { modifiedAttack = 0; - print("Sheild Hit!"); - Sheild.SetActive(false); - sheild = false; + print("Shield Hit!"); + Shield.SetActive(false); + shield = false; }