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()); }
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); } } }
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(); }
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); } }
//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; }
public void Shoot(GeomitProjectile projectile, int angle, int force) { StartCoroutine(AimAndFire(projectile, angle, force)); }