diff --git a/Assets/Animations/Enemy Attack.controller b/Assets/Animations/Enemy Attack.controller index e68182c..285f536 100644 --- a/Assets/Animations/Enemy Attack.controller +++ b/Assets/Animations/Enemy Attack.controller @@ -11,8 +11,8 @@ AnimatorState: m_Speed: 1 m_CycleOffset: 0 m_Transitions: - - {fileID: 1452401886095301030} - {fileID: -4540420866084089111} + - {fileID: 5026858282347151247} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -39,18 +39,18 @@ AnimatorStateMachine: m_ChildStates: - serializedVersion: 1 m_State: {fileID: -8759306199506438392} - m_Position: {x: 300, y: 100, z: 0} + m_Position: {x: 250, y: 60, z: 0} - serializedVersion: 1 m_State: {fileID: 2772376272150863852} - m_Position: {x: 300, y: 0, z: 0} + m_Position: {x: 250, y: 170, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] m_StateMachineTransitions: {} m_StateMachineBehaviours: [] - m_AnyStatePosition: {x: 50, y: 20, z: 0} - m_EntryPosition: {x: 50, y: 120, z: 0} - m_ExitPosition: {x: 800, y: 120, z: 0} + m_AnyStatePosition: {x: 410, y: -20, z: 0} + m_EntryPosition: {x: 60, y: -10, z: 0} + m_ExitPosition: {x: 530, y: 70, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: -8759306199506438392} --- !u!1101 &-4540420866084089111 @@ -123,31 +123,9 @@ AnimatorStateTransition: m_Mute: 0 m_IsExit: 0 serializedVersion: 3 - m_TransitionDuration: 0.24999982 - m_TransitionOffset: 0.000000059604695 - m_ExitTime: 0.9997957 - m_HasExitTime: 1 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 ---- !u!1101 &1452401886095301030 -AnimatorStateTransition: - m_ObjectHideFlags: 3 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: [] - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 0} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 1 - serializedVersion: 3 - m_TransitionDuration: 0.25 - m_TransitionOffset: 0 - m_ExitTime: 0.75 + m_TransitionDuration: 0.24999976 + m_TransitionOffset: 0.0030431175 + m_ExitTime: 0.7242597 m_HasExitTime: 1 m_HasFixedDuration: 1 m_InterruptionSource: 0 @@ -180,3 +158,25 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &5026858282347151247 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 1 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 diff --git a/Assets/Animations/Enemy Hit Draft.anim b/Assets/Animations/Enemy Hit Draft.anim index 4bda238..dce6138 100644 --- a/Assets/Animations/Enemy Hit Draft.anim +++ b/Assets/Animations/Enemy Hit Draft.anim @@ -95,7 +95,7 @@ AnimationClip: m_Level: 0 m_CycleOffset: 0 m_HasAdditiveReferencePose: 0 - m_LoopTime: 1 + m_LoopTime: 0 m_LoopBlend: 0 m_LoopBlendOrientation: 0 m_LoopBlendPositionY: 0 diff --git a/Assets/Scenes/Test Scene.unity b/Assets/Scenes/Test Scene.unity index 5e459ac..0796834 100644 --- a/Assets/Scenes/Test Scene.unity +++ b/Assets/Scenes/Test Scene.unity @@ -1200,6 +1200,7 @@ MonoBehaviour: EnemyRobot: {fileID: 1823112110} Hit: {fileID: 76123733} EnemyHit: {fileID: 253373582} + Sheild: {fileID: 1797600398} --- !u!4 &1480396848 Transform: m_ObjectHideFlags: 0 @@ -1276,6 +1277,87 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1797600398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1797600400} + - component: {fileID: 1797600399} + m_Layer: 0 + m_Name: Sheild + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!212 &1797600399 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797600398} + 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: 0 + m_SortingLayer: 0 + 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 &1797600400 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797600398} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1.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: 0, y: 0, z: 0} --- !u!1 &1823112110 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/GMScript.cs b/Assets/Scripts/GMScript.cs index 47c7445..f53e0f9 100644 --- a/Assets/Scripts/GMScript.cs +++ b/Assets/Scripts/GMScript.cs @@ -10,8 +10,10 @@ public class GMScript : MonoBehaviour public GameObject EnemyRobot; public GameObject Hit; public GameObject EnemyHit; + public GameObject Sheild; private bool noRepeat = true; + private bool sheild = false; private bool gameover = false; private bool victory = false; private int partyHealth = 16; @@ -230,6 +232,7 @@ public class GMScript : MonoBehaviour { PartyMembers[OrderNumbers[i]-1].transform.GetChild(0).GetComponent().sprite = null; + Animator attack = PartyMembers[OrderNumbers[i]-1].transform.GetComponent(); attack.SetTrigger("AttackTrigger"); @@ -237,21 +240,64 @@ public class GMScript : MonoBehaviour attack.GetCurrentAnimatorStateInfo(0).length +attack.GetCurrentAnimatorStateInfo(0).normalizedTime); - Hit.transform.GetComponent().color = + attack.SetTrigger("AttackTrigger"); + + print(PartyColours[OrderNumbers[i]-1]); + + //CHECKING IF AN "ATTACK" OR "NON-ATTACK" ROBOT IS GOING + if(((Colours)PartyColours[OrderNumbers[i]-1] != Colours.Grey && + (Colours)PartyColours[OrderNumbers[i]-1] != Colours.Green && + (Colours)PartyColours[OrderNumbers[i]-1] != Colours.Lime) + && sheild != true) + { + + Hit.transform.GetComponent().color = PartyMembers[OrderNumbers[i]-1].transform.GetComponent().color; - attack.SetTrigger("AttackTrigger"); - Hit.SetActive(true); + 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 + +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); - Hit.SetActive(false); - hit.SetTrigger("HitTrigger"); + Hit.SetActive(false); + hit.SetTrigger("HitTrigger"); + + } + + //GREY ROBOT (SHEILD) IS GOING + if ((Colours)PartyColours[OrderNumbers[i]-1] == Colours.Grey){ + + sheild = true; + Sheild.transform.GetComponent().color = + PartyMembers[OrderNumbers[i]-1].transform.GetComponent().color; + Sheild.SetActive(true); + + } + + //GREEN/LIME ROBOT (HEALTH) IS GOING + if ((Colours)PartyColours[OrderNumbers[i]-1] == Colours.Green || + (Colours)PartyColours[OrderNumbers[i]-1] == Colours.Lime){ + + EnemyHit.transform.GetComponent().color = + PartyMembers[OrderNumbers[i]-1].transform.GetComponent().color; + + EnemyHit.SetActive(true); + + Animator hit = EnemyHit.transform.GetComponent(); + hit.SetTrigger("HitTrigger"); + + yield return new WaitForSeconds( + hit.GetCurrentAnimatorStateInfo(0).length + +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); + + EnemyHit.SetActive(false); + hit.SetTrigger("HitTrigger"); + + } //SETTING AND OUTPUT OF ROBOT COLOUR robotColour = (Colours)PartyColours[OrderNumbers[i]-1]; @@ -294,17 +340,24 @@ public class GMScript : MonoBehaviour EnemyRobot.transform.GetComponent().color; enemyAttackAnim.SetTrigger("AttackTrigger"); - EnemyHit.SetActive(true); - Animator hit = EnemyHit.transform.GetComponent(); - hit.SetTrigger("HitTrigger"); + //HIT EFFECT ONLY WORKS IF THERE IS NO SHEILD UP + if(sheild == false) + { - yield return new WaitForSeconds( - hit.GetCurrentAnimatorStateInfo(0).length - +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); + EnemyHit.SetActive(true); - EnemyHit.SetActive(false); - hit.SetTrigger("HitTrigger"); + Animator hit = EnemyHit.transform.GetComponent(); + hit.SetTrigger("HitTrigger"); + + yield return new WaitForSeconds( + hit.GetCurrentAnimatorStateInfo(0).length + +hit.GetCurrentAnimatorStateInfo(0).normalizedTime); + + EnemyHit.SetActive(false); + hit.SetTrigger("HitTrigger"); + + } //ENEMY ATTACKING PARTY DamageEnemy(enemyAttack, (Colours)enemyColour); @@ -315,7 +368,30 @@ public class GMScript : MonoBehaviour { int modifier = 1; - int modifiedAttack = partyAttack * modifier; + int modifiedAttack = 1; + + if(partyMember == Colours.Grey || partyMember == Colours.Green || partyMember == Colours.Lime) + { + + modifier = 0; + + if(partyMember == Colours.Green || partyMember == Colours.Lime) + { + + partyHealth += 4; + print(partyMember + " healed the team for 4"); + print("Party health is now: " + partyHealth + " HP"); + + } + + } + + if(sheild == true) + { + modifier = 0; + } + + modifiedAttack = partyAttack * modifier; enemyHealth -= modifiedAttack; print(partyMember + " robot attacked for " + modifiedAttack); @@ -327,7 +403,20 @@ public class GMScript : MonoBehaviour { int modifier = 1; - int modifiedAttack = enemyAttack * modifier; + int modifiedAttack = 4; + + //HIT ONLY DAMAGES IF THERE IS NO SHEILD UP + if(sheild == true) + { + + modifier = 0; + print("Sheild Hit!"); + Sheild.SetActive(false); + sheild = false; + + } + + modifiedAttack = enemyAttack * modifier; partyHealth -= modifiedAttack; print(enemyColour + " enemy robot attacked for " + modifiedAttack); diff --git a/Assets/Textures/SheildDraft.png b/Assets/Textures/SheildDraft.png new file mode 100644 index 0000000..f68da09 Binary files /dev/null and b/Assets/Textures/SheildDraft.png differ diff --git a/Assets/Textures/SheildDraft.png.meta b/Assets/Textures/SheildDraft.png.meta new file mode 100644 index 0000000..7da1443 --- /dev/null +++ b/Assets/Textures/SheildDraft.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 65bf9c77d9d7eee4ab76ef2fe3a099e3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 7c15451..b97c17a 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -6,6 +6,7 @@ TagManager: tags: - Party - Attack + - Enemy layers: - Default - TransparentFX