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; } } }
// 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; } }