private IEnumerator PerformAbilities(PacketReader packetReader) { // updating the time of completing from 0 to 1 _startAbilities = true; //timeline.StartTimeline(TimeToCompleteAbility); FractionTillComplete = 0.0f; for (int fractionID = 0; fractionID < NumOfSlots; fractionID++) { FractionTillAbilityComplete[fractionID] = 0.0f; } _currentTime = 0.0f; _onSlotID = 0; _slottingMachineSize = packetReader.GetPacketSize(); for (int slotID = 0; slotID < _slottingMachineSize; slotID++) { var abilityID = packetReader.GetPackAbilityIDFromIndex(slotID); switch (abilityID) { case (int)ability.delay: { _isDucking = false; /* _chipsAnimator.SetBool("IsDucking", _isDucking);*/ continue; //break; } case (int)ability.jump: { // Debug.Log("Jump Action"); //_chipsAnimator.speed /= TimeToCompleteAbility; //_chipsRigidbody2D.AddForce(new Vector2(0, _forceAmountWithDefaultValues), ForceMode2D.Impulse); //_chipsRigidbody2D.velocity += (Vector2.up * -Physics2D.gravity.y * TimeToCompleteAbility); _isDucking = false; _isJumping = true; _chipsAnimator.SetTrigger("IsJumping"); /* _chipsAnimator.SetBool("IsDucking", _isDucking);*/ ApplyJumpForce(); AudioUtil.PlayOneOff(SFX_Jumping); break; } case (int)ability.duck: { _isDucking = true; AudioUtil.PlayOneOff(SFX_Ducking); /* _chipsAnimator.SetBool("IsDucking", _isDucking);*/ break; } default: break; } _chipsAnimator.SetBool("IsDucking", _isDucking); yield return(new WaitForSeconds(TimeToCompleteAbility)); _isJumping = false; _onSlotID++; } _startAbilities = false; if (groundDetector.isGrounded && _isDucking) { _isDucking = false; } _chipsAnimator.SetBool("IsDucking", _isDucking); _onSlotID = -1; FractionTillComplete = 0.0f; for (int fractionID = 0; fractionID < NumOfSlots; fractionID++) { FractionTillAbilityComplete[fractionID] = 0.0f; } _packetReader.ClearSlots(); }