コード例 #1
0
    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");
                }
            }
        }
    }
コード例 #2
0
    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");
                }
            }
            //}
        }
    }
コード例 #3
0
ファイル: PastaGun.cs プロジェクト: Permilias/PestoRetro
    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();
        }
    }
コード例 #4
0
 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);
         }
     }
 }
コード例 #5
0
ファイル: PastaManager.cs プロジェクト: Permilias/PestoRetro
    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);
    }
コード例 #6
0
    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);
    }
コード例 #7
0
ファイル: PastaManager.cs プロジェクト: Permilias/PestoRetro
 public void Repool(PastaProjectile projectile)
 {
     projectile.transform.parent = transform;
     projectilePool.Enqueue(projectile);
     projectile.gameObject.SetActive(false);
 }