public void shoot() { if (!isGod) { Bullets newBullet = factory.bulletFactory("bullet", position, new Vector2(0, -10), true, 1); newBullet.position = position; //allow setting through constructor? if (bullets.Count < 20) { bullets.Add(newBullet); } } else { //BulletSpread spread = (BulletSpread)factory.bulletFactory("spread", position, Vector2.Zero, true, 5, -1); BulletSpread spread = (BulletSpread)factory.bulletFactory("spread", position, Vector2.Zero, true, 5); foreach (Bullets bullet in spread.bullets) { if (bullets.Count < 80) { bullets.Add(bullet); } } } }
public static GameObject Create(Vector2 pos, int attackNumber, float cooldown = 1, float bulletSpeed = 5, bool runTimer = true, bool translate = false, bool isParent = true) { GameObject rObj = Instantiate(dfBulletSpread, pos, Quaternion.identity) as GameObject; BulletSpread rScript = rObj.GetComponent <BulletSpread>(); rScript.attackNumber = attackNumber; rScript.bulletSpeed = bulletSpeed; rScript.cooldown = rScript.timer = cooldown; rScript.runTimer = runTimer; rScript.translate = translate; rScript.isParent = isParent; return(rObj); }
// Update is called once per frame void Update() { if (bulletTimer <= 0) { // Timer bulletTimer = bulletCooldown; // Calculating Rotation var r = 0f; if (isRandomRotation) { r = Random.Range(-rotationSpeed, rotationSpeed); } else { r = rotationSpeed * rF; rF *= -1; } // Instantiating Bullet var bSpread = BulletSpread.Create(transform.position, numOfBullets, bulletSpeed: bulletSpeed, runTimer: false, translate: true, isParent: true); bSpread.transform.eulerAngles = new Vector3(0, 0, r); var bullets = bSpread.GetComponent <BulletSpread>().Attack(customObj: customObject); bulletSpreads.Add(bSpread); // Checking for Max Bullets if (bulletSpreads.Count >= maxBulletSpreads) { Destroy(bulletSpreads[0] as GameObject); bulletSpreads.RemoveAt(0); } // If we want a customSprite the custom Sprite will be applied to each of the bullets if (customSprite != null) { foreach (var bullet in bullets) { bullet.GetComponent <SpriteRenderer>().sprite = customSprite; } } RotateBy.Add(bSpread, r); } bulletTimer -= Time.deltaTime; }