Beispiel #1
0
    private IEnumerator AimAndFire(GeomitProjectile projectile, int angle, int force)
    {
        yield return(null);

        //Manejo de camara
        //if (GameManager.Instance.UseDynamicCamera)
        //{
        //    GameManager.Instance.Camera.SetShootPosition();
        //    yield return new WaitUntil(() => GameManager.Instance.Camera.IsCameraReady);
        //}

        //Rotacion
        audioSource.loop = true;
        PlaySound(aimSound);
        angle = angle % 360;
        do
        {
            pivot.localEulerAngles = Vector3.Lerp(pivot.localEulerAngles, new Vector3(0, 0, angle), 1.2f * Time.deltaTime);
            yield return(null);
        } while (Mathf.Abs(Mathf.Abs(angle) - Mathf.Abs(pivot.localEulerAngles.z)) > 2);

        pivot.localEulerAngles = new Vector3(0, 0, angle);
        audioSource.Stop();
        audioSource.loop = false;
        yield return(new WaitForSeconds(0.3f));

        //Fire(projectile, force);
        Fire(projectile, muzzle.right * force);
        yield return(new WaitForEndOfFrame());
    }
Beispiel #2
0
    public void EndShoot()
    {
        projectileShooted = false;
        superSpeedUsed    = false;
        if (GeomitsToPickLeft == 0)
        {
            //Game Completed
            GameProgress.Instance.PlayerProgress.worldsProgress[selectedWorld] = selectedLevel + 1;
            GameProgress.Instance.PlayerProgress.goldCoins    += GoldCoinsPicked;
            GameProgress.Instance.PlayerProgress.diamondCoins += DiamondCoinsPicked;
            GameProgress.Instance.PlayerProgress.goldStars    += GoldStarsPicked;
            GameProgress.Instance.PlayerProgress.diamondStars += DiamondStarsPicked;

            GameUIController.Instance.ShowWinPanel(levelInfo.NextLevelInfo);

            GameProgress.Instance.SaveProgress();
        }
        else
        {
            ProjectilesLeft--;
            if (ProjectilesLeft > 0)
            {
                nextProjectileIndex++;
                NextProjectile = levelProjectiles[nextProjectileIndex];
                GameUIController.Instance.ShowShootingPanels();
            }
            else
            {
                //Perdio
                LevelFailed(FailCause.OutOfProjectiles);
            }
        }
    }
Beispiel #3
0
    private void InitGame()
    {
        print(string.Format("Init level, selected world: {0}, level: {1} GM.I: {2}", selectedWorld, selectedLevel, Instance));
        GameUIController.Instance.ShowShootingPanels(false);
        Instantiate(levelInfo.Scenario);
        cannon        = FindObjectOfType <Cannon>();
        camController = Camera.main.GetComponent <CameraController>();
        camController.SetCameraLimits(levelInfo.CamHztalLimits, levelInfo.CamVrtcalLimits);

        //Load level projectiles
        levelProjectiles = new GeomitProjectile[levelInfo.ProjectilesCount];
        for (int index = 0; index < levelInfo.ProjectilesCount; index++)
        {
            GeomitProjectile prefab = PrefabsLibrary.Instance.GetAvailableRandomProjectile();
            levelProjectiles[index] = Instantiate(prefab, new Vector3(100, 10, -20), Quaternion.identity);
            levelProjectiles[index].Rigidbody_.simulated = false;
            levelProjectiles[index].gameObject.name      = prefab.name;
            levelProjectiles[index].Rigidbody_.mass      = levelInfo.ProjectilesMass[index];
        }

        GameUIController.Instance.SetLevelGravityText(levelInfo.Gravity);
        ProjectilesLeft    = levelInfo.ProjectilesCount;
        GeomitsToPickLeft  = FindObjectsOfType <Geomit>().Length;
        GoldCoinsPicked    = 0;
        DiamondCoinsPicked = 0;
        GoldStarsPicked    = 0;
        DiamondStarsPicked = 0;

        nextProjectileIndex = 0;
        NextProjectile      = levelProjectiles[nextProjectileIndex];

        GameUIController.Instance.ShowShootingPanels();
    }
Beispiel #4
0
 public void SetNextProjectileInfo(GeomitProjectile projectile)
 {
     if (projectileNameText && projectile)
     {
         projectileNameText.text = projectile.gameObject.name;
         projectileImage.sprite  = projectile.Sprite_;
         projectileMassText.text = string.Format("Mass: {0} Kg", projectile.Rigidbody_.mass);
     }
 }
Beispiel #5
0
    //private void Fire(GeomitProjectile projectile, int force)
    //{
    //    //smokeParticles.Play();
    //    projectile.transform.position = muzzle.position;
    //    projectile.Rigidbody_.simulated = true;
    //    projectile.Rigidbody_.velocity = Vector2.zero;
    //    projectile.PlaySound(shootSound);//Lo sonamos desde la bala porque cada bala es una instancia diferencte con su propio audioSource
    //    projectile.Rigidbody_.AddForce(muzzle.right * force, ForceMode2D.Impulse);
    //    projectile.isBeenShooted = true;
    //}

    private void Fire(GeomitProjectile projectile, Vector2 initialVelocity)
    {
        //smokeParticles.Play();
        projectile.transform.position   = muzzle.position;
        projectile.Rigidbody_.simulated = true;
        projectile.Rigidbody_.velocity  = Vector2.zero;
        projectile.PlaySound(shootSound);//Lo sonamos desde la bala porque cada bala es una instancia diferencte con su propio audioSource
        //projectile.Rigidbody_.AddForce(muzzle.right * force, ForceMode2D.Impulse);
        projectile.Rigidbody_.velocity = initialVelocity;
        projectile.isBeenShooted       = true;
    }
Beispiel #6
0
 public void Shoot(GeomitProjectile projectile, int angle, int force)
 {
     StartCoroutine(AimAndFire(projectile, angle, force));
 }