Exemple #1
0
    protected GameObject GetLaser()
    {
        int        weaponID = _laserPrefab.GetWeaponType();
        GameObject laser    = OnGetLaser?.Invoke(weaponID);

        if (laser != null)
        {
            return(laser);
        }
        return(null);
    }
Exemple #2
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);
            }
        }
    }
Exemple #3
0
    protected virtual void FireLaser()
    {
        float fireRate = Random.Range(_minFireDelay, _maxFireDelay);

        _canFire = Time.time + fireRate;

        PlayClip(_laserClip);

        GameObject enemyLaser;

        for (int i = 0; i < _laserSpawns.Length; i++)
        {
            int weaponType = _laserPrefab.GetWeaponType();
            enemyLaser = OnGetLaser?.Invoke(weaponType);
            if (enemyLaser != null)
            {
                enemyLaser.GetComponent <Laser>().AssignEnemyLaser();
                enemyLaser.transform.position = _laserSpawns[i].position;
                enemyLaser.SetActive(true);
            }
        }
    }