private void BonusTargetSpawn()
    {
        if (this.rateOfBonusTargetSpawn <= 0f)
        {
            return;
        }

        float durationBetweenTwoTargetsSpawn = 1f / this.rateOfBonusTargetSpawn;

        if (Time.time < this.lastBonusTargetSpawnTime + durationBetweenTwoTargetsSpawn)
        {
            return;
        }

        // chose random target type
        System.Array values = new int[2];
        values.SetValue(TargetType.TopBonusTarget, 0);
        values.SetValue(TargetType.BottomBonusTarget, 1);
        TargetType targetType = (TargetType)values.GetValue(UnityEngine.Random.Range(0, values.Length));

        // spawn !
        TargetsFactory.GetTarget(targetType);

        this.lastBonusTargetSpawnTime = Time.time;
    }