private IEnumerator VaultEnumerator() { spawnedIndicator = Instantiate(indicatorPrefab, transform.position, Quaternion.identity); GameController.instance.TimeScaleSlowDown(0.1f, frozenTime, 0.2f); CinemachineFramingTransposer vir = CameraManager.instance.currentCam.GetCinemachineComponent <CinemachineFramingTransposer>(); Camera main = Camera.main; Vector2 direction = Vector2.right; float timer = 0; while (timer < frozenTime) { Vector3 worldMousePosition = main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, vir.m_CameraDistance)); direction = new Vector2(worldMousePosition.x - transform.position.x, worldMousePosition.y - transform.position.y).normalized; if (spawnedIndicator != null) { float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; spawnedIndicator.transform.position = transform.position; spawnedIndicator.transform.rotation = Quaternion.Euler(0, 0, angle - 90f); } timer += Time.unscaledDeltaTime; yield return(null); } if (spawnedIndicator != null) { Destroy(spawnedIndicator); } Debug.DrawLine(transform.position, new Vector3(direction.x, direction.y, 0) + transform.position, Color.blue, 1f); basicSlashRef.noFullRecoil = false; onVaultSuccess?.Invoke(); isVaulting = false; //Vault needs to end by this point or else it will be cancelled when Dash activates. dashRef.DashInitiate(direction, vaultSpeed, vaultTime, false); yield return(new WaitForSeconds(vaultTime + 0.25f)); foreach (Collider2D col in lastHits) { if (aEntity.healthControl.ignoreColliders.Contains(col)) { aEntity.healthControl.ignoreColliders.Remove(col); } } lastHits.Clear(); }