コード例 #1
0
ファイル: HazardSpawner.cs プロジェクト: pauty/FlatWars
    void changeHazardProbabilities()
    {
        int newModeIdx = NamedRandomizable.GetRandomIdx(spawnModes);

        if (newModeIdx == currentModeIdx)
        {
            newModeIdx = (newModeIdx + 1) % spawnModes.Length;
        }
        currentModeIdx       = newModeIdx;
        currentProbabilities = spawnModes[newModeIdx].probabilities;
        for (int i = 0; i < hazardFamilies.Length; i++)
        {
            if (i < currentProbabilities.Length)
            {
                hazardFamilies[i].probabilityWeight = currentProbabilities[i];
            }
            else
            {
                hazardFamilies[i].probabilityWeight = 0F;
            }
        }
    }
コード例 #2
0
ファイル: HazardSpawner.cs プロジェクト: pauty/FlatWars
    // Update is called once per frame
    void Update()
    {
        if (Time.time >= nextChangeTime)
        {
            this.changeHazardProbabilities();
            nextChangeTime = Time.time + Random.Range(changeModeIntervalMin, changeModeIntervalMax);
        }

        if (Time.time >= nextSpawnTime && triggerChecked)
        {
            GameObject[] hazardPrefabs = hazardFamilies[NamedRandomizable.GetRandomIdx(hazardFamilies)].prefabs;

            int r = Random.Range(0, hazardPrefabs.Length);

            GameObject hazard      = Instantiate(hazardPrefabs[r], transform.position, Quaternion.identity);
            Transform  wallScaleX  = null;
            Transform  wallScaleY  = null;
            Transform  wallScaleXY = null;
            //
            r = Random.Range(0, 4);
            switch (r)
            {
            case 0:
                //DO NOTHING, NO ROTATION
                break;

            case 1:
                hazard.transform.Rotate(new Vector3(0, 0, 180));
                break;

            case 3:
                hazard.transform.Rotate(new Vector3(0, 0, 90));
                break;

            case 4:
                hazard.transform.Rotate(new Vector3(0, 0, -90));
                break;
            }
            float scaleX = tunnel.widthSteps * tunnel.sectorWidth / 10;
            float scaleY = tunnel.heightSteps * tunnel.sectorHeight / 10;
            if (r >= 3)
            {
                //swap
                float tmp = scaleX;
                scaleX = scaleY;
                scaleY = tmp;
            }

            wallScaleX = hazard.transform.Find("ScaleX");
            if (wallScaleX != null)
            {
                wallScaleX.transform.localScale = new Vector3(scaleX, 1, 1);
            }
            wallScaleY = hazard.transform.Find("ScaleY");
            if (wallScaleY != null)
            {
                wallScaleY.transform.localScale = new Vector3(1, scaleY, 1);
            }
            wallScaleXY = hazard.transform.Find("ScaleXY");
            if (wallScaleXY != null)
            {
                wallScaleXY.transform.localScale = new Vector3(scaleX, scaleY, 1);
            }
            hazard.transform.localScale = new Vector3(1, 1, tunnel.sectorDepth / 10);

            triggerChecked = false;
        }
    }