Esempio n. 1
0
    private void SpawnStar()
    {
        List <Vector2> freeSectors = new List <Vector2>();

        for (int i = 0; i < sectorCount; i++)
        {
            for (int j = 0; j < sectorCount; j++)
            {
                if (SectorFree(i, j))
                {
                    freeSectors.Add(new Vector2(i, j));
                }
            }
        }

        if (freeSectors.Count == 0)
        {
            return;
        }

        int     sectorInd    = UnityEngine.Random.Range(0, freeSectors.Count);
        Vector3 starPosition = GetRandomPositionInSector(freeSectors[sectorInd]);

        float maxRadius = starsMaxRadius;

        for (int i = stars.Count - 1; i >= 0; i--)
        {
            float distance = (stars[i].transform.position - starPosition).magnitude - minOffset - stars[i].radius;
            maxRadius = Mathf.Min(maxRadius, distance);
        }

        float distanceToPlayer = (player.transform.position - starPosition).magnitude - minOffset - player.radius;

        maxRadius = Mathf.Min(maxRadius, distanceToPlayer);

        if (maxRadius < starsMinRadius)
        {
            return;
        }

        int            starInd = GetRandomStarIndex();
        StarController newStar = Instantiate(starPrefabs[starInd], starsParent) as StarController;

        newStar.Init(starPosition, starsMinRadius, maxRadius);
        stars.Add(newStar);
    }
    private IEnumerator GameInit()
    {
        chartEle   = SetChartDifficlty(StaticValue.difficulty);
        gaugeRule  = (int)StaticValue.gaugeRule;
        noteSpeed  = StaticValue.noteSpeed;
        judgeStyle = StaticValue.judgeStyle;
        System.Array.Resize(ref uiData.judgeCount, timingRange[(int)judgeStyle].judges.Length);

        ChartStruct chart = musicStruct.charts[chartEle];

        timeController.Init(chart);
        tutorialController.Init(isTutorial);
        // 各コントローラーの初期化処理を非同期で行う
        yield return(StartCoroutine(notesController.GenerateNotes(gaugeStructs.gaugeRules[gaugeRule], chart, laneObjs)));

        yield return(StartCoroutine(measureController.Init(chart, laneObjsParent)));

        yield return(StartCoroutine(inputController.Init(laneObjs.Length)));

        yield return(StartCoroutine(starCountroller.Init()));

        yield return(StartCoroutine(particleController.Init()));

        yield return(StartCoroutine(LoadAudioData(musicStruct.musicFileName, loadName)));

        RenderSettings.skybox = backGroundData.backGroundMaterials[(int)musicStruct.backGroundType];

        notesController.UpdateManage(noteSpeed);
        measureController.MoveMeasure(noteSpeed, chart);

        // ScoreCountの計算
        uiData.maxScoreCount   = notesController.totalCombo * timingRange[(int)judgeStyle].judges[(int)JudgeType.Just].scoreCount;
        uiData.totalGaugeCount = notesController.totalGaugeCount;
        uiData.noteSpeed       = noteSpeed;
        uiData.bpm             = chart.bpm;
        uiData.gaugePer        = gaugeStructs.gaugeRules[gaugeRule].startPar;

        growAnim.SetFloat("Speed", chart.bpm / 120);

        musicSource.volume = musicStruct.musicVolume;

        uiCountroller.Init(
            uiData: uiData,
            gaugeRule: gaugeStructs.gaugeRules[gaugeRule],
            trackCount: StaticValue.trackCount,
            musicName: musicStruct.musicName,
            artistName: musicStruct.composer,
            difficulty: chart.difficulty,
            level: chart.level,
            timeLength: Clac.TimeByTimingCount(
                count: chart.chartLength,
                oneBeatCount: Clac.OneBeatCount(chart.beat, chart.beatParam),
                musicOffset: chart.musicOffset,
                bpm: chart.bpm,
                tempoChanger: chart.tempoChangers),
            isDemo: isDemoPlay,
            isTutorial: isTutorial
            );

        yield return(null);

        System.GC.Collect();
        yield return(null);

        isInitFinish = true;

        cookpitUIAnim.SetBool("Show", true);

        if (isDemoPlay || isTutorial)
        {
            // デモプレイ、チュートリアルはすぐに始める
            cookpitUIAnim.SetTrigger("NonAnim");
            isStarting = true;
        }
        else
        {
            keyInfoAnim.SetBool("KeyShow", true);
            yield return(new WaitForSeconds(1.0f));
        }
    }