private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.layer.Equals(LayerMask.NameToLayer("Projectiles"))) { PastaProjectile pastaProjectile = collision.gameObject.GetComponent <PastaProjectile>(); if (pastaProjectile.shotByPlayer) { if (pastaProjectile.shotConfig.cooked && pastaProjectile.pasta.config.pastaName.Equals("Spaghetti")) //spag cuite { timerImmobile = timeSpaghettiCookedStopIA; //Anim Start soldadoAnimator.SetBool("isStunned", true); } SoundManager.Instance.PlaySound(SoundManager.Instance.enemySimpleHit); FXPlayer.Instance.PlayFX("Blood", this.transform.position); soldado.Life -= pastaProjectile.shotConfig.damage; PastaManager.Instance.Repool(pastaProjectile); if (soldado.Life <= 0 && !soldadoAnimator.GetBool("IsDead")) { soldadoAnimator.SetBool("IsDead", true); StartCoroutine("Dead"); } } } }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.layer.Equals(LayerMask.NameToLayer("Projectiles"))) { //if (brute.HitRemaningForCharge > 0) //{ PastaProjectile pastaProjectile = collision.gameObject.GetComponent <PastaProjectile>(); if (pastaProjectile.shotByPlayer) { if (pastaProjectile.shotConfig.cooked && pastaProjectile.pasta.config.pastaName.Equals("Spaghetti")) { timerImmobile = timeSpaghettiCookedStopIA; } SoundManager.Instance.PlaySound(SoundManager.Instance.enemyBruteHit); FXPlayer.Instance.PlayFX("Blood", this.transform.position); brute.Life -= pastaProjectile.shotConfig.damage; brute.HitRemaningForCharge -= pastaProjectile.shotConfig.damage; PastaManager.Instance.Repool(pastaProjectile); if (brute.Life <= 0 && !bruteAnimator.GetBool("IsDead")) { bruteAnimator.SetBool("IsDead", true); StartCoroutine("Dead"); } } //} } }
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 void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.layer.Equals(LayerMask.NameToLayer("Projectiles"))) { PastaProjectile pastaProjectile = collision.gameObject.GetComponent <PastaProjectile>(); if (!pastaProjectile.shotByPlayer) { GameManager._instance.healthSystem.Damage(1); //pastaProjectile.shotConfig.damage FXPlayer.Instance.PlayFX("Blood", this.transform.position); PastaManager.Instance.Repool(pastaProjectile); } } }
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); }
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); }
public void Repool(PastaProjectile projectile) { projectile.transform.parent = transform; projectilePool.Enqueue(projectile); projectile.gameObject.SetActive(false); }