void Update() { if (Input.GetKeyDown(KeyCode.Tab) && _isHomingMissileActive == true) { int weaponType = _homingMissilePrefab.GetWeaponType(); GameObject missile = OnGetWeapon?.Invoke(weaponType); if (missile != null) { missile.transform.position = _spawnPoints[0].position; missile.SetActive(true); _currentMissiles--; if (_currentMissiles < 1) { _currentMissiles = 0; _isHomingMissileActive = false; } OnUpdateMissiles?.Invoke(_currentMissiles, _numberOfMissiles); } } if (Input.GetKey(KeyCode.Space) && Time.time > _canFire && _currentAmmo > 0) { FireLaser(); } CalculateMovement(); }
protected GameObject GetWeapon(int weaponType) { GameObject weapon = OnGetWeapon?.Invoke(weaponType); if (weapon != null) { return(weapon); } return(null); }
void FireLaser() { GameObject weapon; if (_isNegativeEffectActive == true || _isOmniShotActive == true) { _canFire = Time.time + _fireRate + _fireDelayIncrease; } else { _canFire = Time.time + _fireRate; } PlayClip(_laserClip); if (_isTripleShotActive == true) { int weaponType = _laserPrefab.GetWeaponType(); for (int i = 0; i < _spawnPoints.Length; i++) { weapon = OnGetLaser?.Invoke(weaponType); if (weapon != null) { weapon.transform.position = _spawnPoints[i].position; weapon.SetActive(true); } } } else if (_isOmniShotActive == true) { int weaponType = _omniShotPrefab.GetWeaponType(); weapon = OnGetWeapon?.Invoke(weaponType); if (weapon != null) { weapon.transform.position = transform.position; weapon.SetActive(true); } } else { int weaponType = _laserPrefab.GetWeaponType(); weapon = OnGetLaser?.Invoke(weaponType); if (weapon != null) { weapon.transform.position = _spawnPoints[0].position; weapon.SetActive(true); _currentAmmo--; OnUpdateAmmo?.Invoke(_currentAmmo, _maxAmmo); } } }
void FireMissiles() { _canFire = _fireRate + Time.time; if (_missileSpawnPoints.Length >= 2) { GameObject missile; for (int i = 0; i < _missileSpawnPoints.Length; i++) { int weaponType = _missilePrefab.GetWeaponType(); missile = OnGetWeapon?.Invoke(weaponType); if (missile != null) { missile.transform.position = _missileSpawnPoints[i].position; missile.SetActive(true); if (_player != null) { missile.GetComponent <HomingMissile>().AssignEnemyMissile(_player.transform); } } } } else if (_missileSpawnPoints.Length > 0) { GameObject missile; int weaponType = _missilePrefab.GetWeaponType(); missile = OnGetWeapon?.Invoke(weaponType); if (missile != null) { missile.transform.position = _missileSpawnPoints[0].position; missile.SetActive(true); if (_player != null) { missile.GetComponent <HomingMissile>().AssignEnemyMissile(_player.transform); } } } }