Exemplo n.º 1
0
    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();
    }
Exemplo n.º 2
0
    protected GameObject GetWeapon(int weaponType)
    {
        GameObject weapon = OnGetWeapon?.Invoke(weaponType);

        if (weapon != null)
        {
            return(weapon);
        }
        return(null);
    }
Exemplo n.º 3
0
    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);
            }
        }
    }
Exemplo n.º 4
0
    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);
                }
            }
        }
    }