private void FillPool() { for (int i = 0; i < poolReserve; i++) { LaserBlast newObj = Instantiate(blastPrefab, blastPoolHolder); newObj.gameObject.SetActive(false); pool.Add(newObj); } }
private void Fire() { if (timer <= 0f) { timer = cooldown; if (AudioMngr != null) { AudioMngr.PlaySFX(shootSound, transform.position, transform, 0.7f); } } else { return; } float angle = Mathf.Deg2Rad * -parent.transform.eulerAngles.z; if (parent.rb != null) { parent.rb.velocity *= stoppingForce; Vector2 dir = new Vector2(Mathf.Sin(angle), Mathf.Cos(angle)); dir.Normalize(); parent.rb.AddForce(-dir * recoil); } bool flipMuzzleFlash = true; for (int i = 0; i < weapons.Length; i++) { Transform weapon = weapons[i]; LaserBlast blast = pool[pool.Count - 1]; pool.RemoveAt(pool.Count - 1); blast.Shoot(weapon.position, transform.rotation, weapon.GetChild(0).position - weapon.position, laserTarget.position - weapon.position, pool, weapon, parent, (double)Pause.timeSinceOpen, this); //muzzle flash GameObject muzFlash = Instantiate(muzzleFlash); muzFlash.transform.position = weapon.position; muzFlash.transform.eulerAngles = Vector3.forward * -angle * Mathf.Rad2Deg; muzFlash.GetComponent <SpriteRenderer>().flipX = flipMuzzleFlash; flipMuzzleFlash = !flipMuzzleFlash; } }