private SpawnPattern getLanePattern() { SpawnPattern pattern = new SpawnPattern(); float x = Random.Range(0, spawnXRange) - spawnXRange/2; int length = Random.Range(0, 15) + 5; for (int i=0; i<length; i++) { Spawn s = new Spawn(); s.location = new Vector2(x, spawnY); s.cooldown = spawnRate; pattern.spawns.Add(s); } return pattern; }
private SpawnPattern getDumbPattern() { SpawnPattern pattern = new SpawnPattern(); float x = Random.Range(0, spawnXRange) - spawnXRange/2; int length = Random.Range(0, 15) + 15; for (int i=0; i<length; i++) { Spawn s = new Spawn(); x = x + Random.Range(0, maxRandomDistX * 2) - maxRandomDistX; s.location = new Vector2(x, spawnY); s.cooldown = spawnRate - dumbSpawnRateMinus; pattern.spawns.Add(s); } return pattern; }
private SpawnPattern getDiagonalPattern() { SpawnPattern pattern = new SpawnPattern(); float x = Random.Range(0, spawnXRange) - spawnXRange/2; float xGap = Random.Range(0, .3f) + .2f; xGap *= x < 0 ? 1 : -1; int length = Random.Range(0, 7) + 5; for (int i=0; i<length; i++) { Spawn s = new Spawn(); x = x + xGap; s.location = new Vector2(x, spawnY); s.cooldown = spawnRate; pattern.spawns.Add(s); } return pattern; }
void Update() { if (spawnCooldown > 0) { spawnCooldown -= Time.deltaTime; } if (CanSpawn && currentSpawnPattern != null) { Spawn next = currentSpawnPattern.getNext(); if (next != null) { Transform newSprinkle = (Transform) Instantiate(spawneePrefab, new Vector3(next.location.x, next.location.y, 0f), transform.rotation); newSprinkle.parent = transform; spawnCooldown = next.cooldown; spawnedCount++; } else { currentSpawnPattern = getRandomPattern(); spawnCooldown = Random.Range(0, timeInBetweenPatternsRange.y - timeInBetweenPatternsRange.x) + timeInBetweenPatternsRange.x; } } }
void Start() { spawnCooldown = spawnRate; currentSpawnPattern = getLanePattern(); }
private SpawnPattern getThickyLinePattern() { SpawnPattern pattern = new SpawnPattern(); float startX = Random.Range(0, spawnXRange) - spawnXRange/2; int length = Random.Range(0, 40) + 20; for (int i=0; i < length; i++) { Spawn s = new Spawn(); float x = Random.Range(0.0f, thickyLineSpawnRadius); s.location = new Vector2(x, spawnY); s.cooldown = spawnRate - 1.0f; pattern.spawns.Add(s); } return pattern; }
// Use this for initialization void Start() { m_bGameStart = false; // Initialise link CreateLink(); m_Link = m_LinkObject.GetComponent <Link>(); m_LinkedGem = new List <Gem>(); // Get spawning information m_HalfDimension = Camera.main.ScreenToWorldPoint(new Vector3((Screen.width), (Screen.height))); m_fLaneWidth = m_HalfDimension.x * 2.0f / LANE_NUM; //m_fBaseGemDropSpeed = m_HalfDimension.y * 2.0f / BASE_GEM_DROP_TIME; // Gem details m_GemDetails = GameObject.FindGameObjectWithTag("Gem Details").GetComponent <GemDetails>(); if (m_GemDetails != null) { Debug.Log("Reset explosion!"); m_GemExplosionPrefab = m_GemDetails.m_GemSet.m_Explosion; } //m_nGemTypeNum = m_aGemList.Length; m_nGemTypeNum = GemContainerSet.GEM_SET_NUM; // Initialise spawning history variables m_PreviousLanes = Enumerable.Repeat(INVALID_LANE, LOOKBACK_NUM).ToList(); //m_PreviousGems = new List<int>(); m_SpawnPattern = GetComponent <SpawnPattern>(); m_lSequence = new List <int>(); m_mSequenceGemTypeMap = new List <int>(); m_nSequenceIndex = 0; m_nSequenceIndexFromList = -1; m_nLastInsertedLaneIndex = -1; // Initialising spawning timer m_fSpawnTimer = 0.0f; //m_fSpawnRate = BASE_SPAWN_RATE; // Initialising spawning live information m_aGemCount = Enumerable.Repeat(0, m_nGemTypeNum).ToArray(); m_nTotalGemCount = 0; m_Gems = new List <List <GameObject> >(); for (int i = 0; i < LANE_NUM; ++i) { m_Gems.Add(new List <GameObject>()); } m_StonedGems = new List <GameObject>(); m_GemsToBeRemoved = new List <GameObject>(); m_GemsToBeDestroyed = new List <GameObject>(); if (NetworkManager.IsConnected() && NetworkManager.IsPlayerOne()) { m_NetworkGemsToBeDestroyed = new List <GameObject>(); } if (NetworkManager.IsConnected() && !NetworkManager.IsPlayerOne()) { m_DestroyedNetworkInfo = new Dictionary <int, DestroyedNetworkInfo>(); } // Initialise life line if (m_LineLine != null) { m_LineLine.transform.position = new Vector3(0.0f, (UNLINKABLE_ZONE * m_HalfDimension.y * 2.0f) + -m_HalfDimension.y, 0.0f) + FRONT_OFFSET; } // Initialising animation timer /* * m_nFrameNum = m_aGemList[0].GetComponent<GemSpriteContainer>().m_Sprites.Length; * for ( int i = 1; i < m_aGemList.Length; ++i ) * { * int num = m_aGemList[i].GetComponent<GemSpriteContainer>().m_Sprites.Length; * m_nFrameNum = m_nFrameNum > num ? num : m_nFrameNum; * } */ m_nFrameNum = m_GemDetails.GetComponent <GemDetails>().m_GemSet.GetGemContainer(0).Length; for (int i = 1; i < GemContainerSet.GEM_SET_NUM; ++i) { int num = m_GemDetails.GetComponent <GemDetails>().m_GemSet.GetGemContainer(i).Length; m_nFrameNum = m_nFrameNum > num ? num : m_nFrameNum; } m_fAnimationIntervalTimer = 0.0f; m_fAnimationTimer = 0.0f; m_bAnimating = false; m_nAnimatingFrame = -1; // Initialise player's stats m_nLevel = 0; m_nPoints = 0; m_nShowingPoints = 0; m_nPrevPoints = 0; m_fPointTimer = 0.0f; m_nHealth = MAX_HEALTH; m_nCurrentCombo = 0; m_nMaxCombo = 0; m_nShowingCombo = 0; m_nPrevCombo = 0; m_fComboTimer = 0.0f; m_fPraiseTimer = 0.0f; m_PraisePos = m_PraiseText.transform.position; m_fSpawnRate = BASE_SPAWN_RATE - m_nLevel * SPAWN_RATE_GROWTH; m_fBaseGemDropSpeed = m_HalfDimension.y * 2.0f / (BASE_GEM_DROP_TIME - (m_nLevel / 2) * GEM_DROP_TIME_GROWTH); m_PlayerStats = GameObject.FindGameObjectWithTag("Player Statistics").GetComponent <PlayerStatistics>(); m_PlayerStats.m_aGems = m_aGemList; m_PlayerStats.m_aDestroyCount = new int [m_aGemList.Length]; for (int i = 0; i < m_aGemList.Length; ++i) { m_PlayerStats.m_aDestroyCount[i] = 0; } // Texts and display m_HealthText.GetComponent <Text>().text = m_nHealth.ToString(); m_ComboText.GetComponent <Text>().text = "Combo\n" + m_nCurrentCombo.ToString(); { Color c = m_ComboText.GetComponent <Text>().color; c.a = 0.0f; m_ComboText.GetComponent <Text>().color = c; } { m_PraiseText.GetComponent <Text>().text = ""; Color c = m_PraiseText.GetComponent <Text>().color; c.a = 0.0f; m_PraiseText.GetComponent <Text>().color = c; } m_LineLine.GetComponent <SpriteRenderer>().color = GetLifeLineColour(); // Gameover m_bGameover = false; m_fGameoverTimer = 0.0f; // Transition Overlay GameObject transition = GameObject.FindGameObjectWithTag("Transition"); transition.transform.position += 5.0f * FRONT_OFFSET; if (NetworkManager.IsConnected()) { m_Network = GameObject.Find("Network Manager").GetComponent <NetworkGameLogic>(); } }
// パターンデータテキストアセットから、パターンデータを読み出す. void LoadSpawnPattern(TextAsset pattern_text, List<SpawnPattern> pList) { string pText = pattern_text.text; string[] lines = pText.Split('\n'); List<string> pattern_data_str = new List<string>(); // BEGIN=>END間のパターンデータのテキスト foreach(var line in lines) { string str = line.Trim(); // 前後の空白を消す. if(str.StartsWith("#")) continue; // コメント行なら読み飛ばし. switch(str.ToUpper()) { case "": continue; // 空行なら読み飛ばし. case "BEGIN": // BEGINがきたらパターンデータテキストを一から作り直す. pattern_data_str = new List<string>(); break;; // TODO 1テキストで複数パターン読み込み出来るようにする. case "END": // ENDがきたらパターンデータテキストを基にパターンデータを作成し、パターンリストに追加. SpawnPattern pattern = new SpawnPattern(); pattern.LoadPattern(pattern_data_str.ToArray()); pList.Add(pattern); // パターンリストに追加. break; default: // BEGIN=>END間なのでパターンデータテキストに追加. pattern_data_str.Add(str); break; } } }