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(); } }
public void Initialize(PastaShotConfig _shotConfig) { gameObject.layer = LayerMask.NameToLayer("Projectiles"); shotConfig = _shotConfig; sr.sprite = shotConfig.projectileSprite; sr.transform.localScale = shotConfig.spriteObjectScale; sr.enabled = false; col.size = shotConfig.colliderSize; col.isTrigger = true; }
public PastaProjectile CreateProjectileAtPosition(PastaShotConfig shotConfig, Vector2 _position, Pasta pasta) { if (projectilePool.Count < 1) { FillProjectilePool(); } PastaProjectile createdProjectile = projectilePool.Dequeue(); createdProjectile.gameObject.SetActive(true); createdProjectile.transform.position = new Vector3(_position.x, _position.y, 0f); createdProjectile.Initialize(shotConfig); createdProjectile.pasta = pasta; return(createdProjectile); }