public void Shoot() { PastaManager.Instance.pastaAmounts[currentSelectedPasta] -= 1; Pasta shotPasta = PastaManager.Instance.pastas[currentSelectedPasta]; PastaShotConfig shotConfig = cookedReady ? shotPasta.config.cookedShot : shotPasta.config.crudeShot; reloadSpeed = shotConfig.reloadSpeed; reloadCount = reloadSpeed; if (SoundManager.Instance) { SoundManager.Instance.PlaySound(shotConfig.firingSound); } if (cookedReady) { cookedReady = false; } cooking = false; cookingCount = 0f; for (int i = 0; i < shotConfig.missileAmount; i++) { PastaProjectile projectile = PastaManager.Instance.CreateProjectileAtPosition(shotConfig, (Vector2)transform.position + (shootingLeft ? new Vector2(-shotLocalPosition.x, shotLocalPosition.y) : shotLocalPosition), shotPasta); if (PlayerController._instance) { projectile.transform.position += PlayerController._instance.transform.position; } FXPlayer.Instance.PlayFX("Shot", projectile.transform.position); if (shotConfig.missileAmount > 1) { int addedAngle = shootingLeft ? 0 : 0; float angleIncrement = shotConfig.missileSpreadAngle / (shotConfig.missileAmount - 1); float maxPositiveAngle = addedAngle + (shotConfig.missileSpreadAngle / 2f); projectile.transform.eulerAngles = new Vector3(0, 0, maxPositiveAngle - (angleIncrement * i)); } else { projectile.transform.eulerAngles = Vector3.zero; } projectile.shotByPlayer = true; projectile.SetDirection(shootingLeft); projectile.Shoot(); } }
private IEnumerator Shoot() { yield return(new WaitForSeconds(0.3f)); Vector2 offset = facingLeft ? new Vector2(-shotOffset.x, shotOffset.y) : shotOffset; PastaProjectile projectile = PastaManager.Instance.CreateProjectileAtPosition(PastaManager.Instance.pastas[shotPasta].config.crudeShot, (Vector2)transform.position + offset, PastaManager.Instance.pastas[shotPasta]); projectile.SetDirection(facingLeft); projectile.transform.eulerAngles = Vector3.zero; projectile.shotByPlayer = false; projectile.Shoot(); soldadoAnimator.SetBool("IsShooting", false); }