コード例 #1
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();
        }
    }
コード例 #2
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);
    }