void SetMultiple2(GameObject ab) { Vector3 BulletRota = ab.transform.eulerAngles; ab.transform.Rotate(new Vector3(0f, 0f, -angle)); GameObject bullet = BP.GetPooledObject(NextBullet);//从对象池实例化子弹 if (bullet != null) { bullet.transform.position = ab.transform.position; bullet.transform.eulerAngles = BulletRota; bullet.transform.Rotate(new Vector3(0f, 0f, angle)); bullet.GetComponent <Bullet>().Damage = ab.GetComponent <Bullet>().Damage; bullet.SetActive(true); } }
//changes how the tower shoots, by storing multiple muzzle poitns and shooting in all of those points, also aims by changing for range public override void Shoot() { Collider[] targets = Physics.OverlapSphere(this.transform.position, Range, EnemyLayer); if (targets.Length > 0) { TimeElapsed += Time.deltaTime; if (TimeElapsed >= RateOfFire) { TimeElapsed = 0; if (BulletPool != null) { for (int i = 0; i < Muzzle.Length; i++) { GameObject bulletObj = BulletPool.GetPooledObject(); bulletObj.transform.position = Muzzle[i].transform.position; bulletObj.transform.rotation = Muzzle[i].transform.rotation; bulletObj.SetActive(true); Bullet newBullet = bulletObj.GetComponent <Bullet>(); newBullet.SetBullet(Damage, TowerStats.bulletSpeed); } } } } }