void Update() { //Debug.Log("crouched " + crouched); //Debug.Log("inair " + inAir); //stops player from being able to move if in pause or countdown if ((countDown == null || !countDown.getCountDown()) && (gameplayPause == null || !gameplayPause.getPaused()) /*&& (!countDown.isFading())*/) { if (!Dead) { performFriction = true; #region Super meter charge // Uncomment the following line for instant meter recharge //superMeterCharge += maxSuperCharge; // Passive meter charge, maybe vary by character superMeterCharge += maxSuperCharge / 100f * Time.deltaTime; if (superMeterCharge > maxSuperCharge) { superMeterCharge = maxSuperCharge; } // Debug.Log("meter charge " + superMeterCharge); superBar.value = superMeterCharge; if (superBar.value >= 100.0f) //Superbar UI slider glow fades in (quickly) when super meter is full { if (superBarGlow.color.a < 1.0f) //until the glow is fully faded in { superBarGlow.color = new Color(0.8784314f, 1f, 0f, superBarGlow.color.a + 0.05f); } //modify last value ^^^ for the fade in rate } else //otherwise the glow is not present unless super meter is full { superBarGlow.color = new Color(0.8784314f, 1f, 0f, 0f); } #endregion Super meter charge #region Falling and jumping animations if (!blockHorizontalMovement && !blockNormalJumpAnims) // Or any other special condition is in effect { if (rb.velocity.y < -0.5f) { // landing = true; if (currentBandMember == "John" || !isSuperActive) { PlayAnims("Fall"); } lowerBodyHitbox.offset = lowOriginalOffset; lowerBodyHitbox.size = lowOriginalSize; } if (rb.velocity.y > 0.5) { if (currentBandMember == "John" || !isSuperActive) { PlayAnims("Jump"); } lowerBodyHitbox.offset = new Vector2(lowOriginalOffset.x, -0.05f); lowerBodyHitbox.size = new Vector2(lowOriginalSize.x, 0.34f); } } #endregion Falling and jumping animations #region Crouching if ((Input.GetKey(down) || (!Input.GetKey(up) && Input.GetAxisRaw(vert) > 0.5)) && !inAir && (currentBandMember == "John" || !isSuperActive)) // This is a hacky fix { // This line used to have !attacking if (!crouched) { playerUpperBody.transform.localPosition = new Vector3(0, -crouchDistance); } crouched = true; PlayAnims("Crouch"); upperBodyHitbox.SetActive(false); if (!listeningForDoubleDownTap) { listeningForDoubleDownTap = true; StartCoroutine(listenForDoubleDownTap()); } } else { if (crouched) { playerUpperBody.transform.localPosition = new Vector3(0, 0); playerLowerAnim.Play(GetAnimName("IdleLegs")); } crouched = false; playerUpperBody.transform.localPosition = new Vector3(0, 0); upperBodyHitbox.SetActive(true); } #endregion Crouching pj.HandleJump(); #region Attacks //Z: Short Range Attack X: Long Range Attack C: Super Attack if (Input.GetKeyDown(CAttack) && !attacking) { StartCoroutine(paa.shortRangeAttackAnims()); StartCoroutine(pam.pa.AttackShort()); } else if (Input.GetKey(RAttack) && !attacking) { StartCoroutine(paa.longRangeAttackAnims()); StartCoroutine(pam.pa.AttackLong()); } else if (Input.GetKeyDown(SAttack) && !attacking && !isSuperActive && superMeterCharge >= maxSuperCharge) { superMeterCharge = 0f; StartCoroutine(paa.superAttackAnims()); StartCoroutine(pam.pa.AttackSuper()); } #endregion Attacks phm.HandleHorizontalMovement(); #region Serj flight vertical movement if (serjFlightActive) { if (Input.GetKey(up)) { rb.velocity = new Vector2(rb.velocity.x, maxAirSpeed * 0.85f); } else if (Input.GetKey(down)) { rb.velocity = new Vector2(rb.velocity.x, -maxAirSpeed * 0.85f); } } #endregion #region Serj wing animations if (serjFlightActive) { serjWings.GetComponent <SpriteRenderer>().enabled = true; } else { serjWings.GetComponent <SpriteRenderer>().enabled = false; } #endregion #region Invulnerability Timer Tick if (curInvulnerableTime > 0f) { curInvulnerableTime -= Time.deltaTime; if (curInvulnerableTime < 0f) { curInvulnerableTime = 0f; } } #endregion } else { // Death animation if (!deathStarted) { isDead = true; StartCoroutine("Kill"); deathStarted = true; // Serj edge case if (serjFlightActive) { rb.gravityScale = 5f; // If gravityScale on prefab changes, this is no longer correct rb.drag = 0f; serjFlightActive = false; PlayAudioEvent(serjFlyEnd); serjWings.GetComponent <SpriteRenderer>().enabled = false; } } } } else if (!Dead) { PlayAnims("Idle"); } else { PlayAnims("Death"); } }