protected virtual void CreateAmmo()     //this is allowed to be overwritten, but has a default method that should be used in most cases
    {
        Transform bulletPrefab = bulletInfo.ammoPrefab;

        //create a bullet for each spot in the array
        for (int i = 0; i < bulletInfo.maxAmmoCount; i++)
        {
            Transform newBullet = Instantiate(bulletPrefab, new Vector3(0, -10, 0), barrelEnd.rotation, bulletParent);
            ammoList.Add(newBullet);
            newBullet.gameObject.GetComponentInChildren <Rigidbody>().gameObject.SetActive(false);            //create a bullet from the prefab

            //if we have a TeamManager then add it to the team list
            teamManager?.AddTeamObject(newBullet.GetComponentInChildren <Rigidbody>(true).transform);

            if (teamManager == null)             //if not, set it to Team Blue
            {
                newBullet.GetComponentInChildren <Rigidbody>(true).transform.tag = TeamManager.Team_Blue;
            }

            BulletParent bulletScript = newBullet.gameObject.GetComponentInChildren <BulletParent>(true);            //get the BulletParent script from the prefab, pass it the UI and initialize it
            bulletScript.bulletSliderManager = bulletSliderManager;
            bulletScript.Initialize();
        }

        //reset the currentBullets
        ammoCount = bulletInfo.maxAmmoCount;
    }