protected virtual void Shoot() { float angle = Random.Range(-bulletDeviation, bulletDeviation); float deltaAngle = spread / (bulletAmount + 1); for (int i = 1; i <= bulletAmount; i++) { Vector3 rot = bulletSpawn.rotation.eulerAngles; rot.z += angle + spread / 2f - (deltaAngle * i); // Execute shooting behaviour. _shootingBehaviour.Activate(bulletSpawn.position, Quaternion.Euler(rot)); ////////// OLD SPAWN CODE ////////// // GameObject bullet = Instantiate(bulletPrefab, bulletSpawn.position, Quaternion.Euler(rot)) as GameObject; // // Check if the assigned bullet is a bullet itself or a bullet container // if (bullet.GetComponent<BulletBase>() == null) // { // foreach (BulletBase childBullet in bullet.GetComponentsInChildren<BulletBase>()) // { // SpawnBullet(childBullet.gameObject); // } // } // else // { // SpawnBullet(bullet); // } } }
public void Initialize() { foreach (var weapon in _weapons) { weapon.Initialize(); } _currentWeapon = _weapons[_pointer]; _currentWeapon.Activate(); }
private void ChangeWeapon(int changeIndex) { _pointer += changeIndex; if (_pointer < 0) { _pointer = _weapons.Count - _pointer; } if (_pointer >= _weapons.Count) { _pointer -= _weapons.Count; } _currentWeapon.Deactivate(); _currentWeapon = _weapons[_pointer]; _currentWeapon.Activate(); }