/// <summary> /// 設定細胞:於 Lv3_DragObject 拖拉結束後呼叫 OnEndDrag /// </summary> /// <param name="cell">當前拖拉的細胞</param> public IEnumerator SetCell(Lv3_DragObject cell) { if (countCell < 4) { // 設定細胞為子物件並調整尺寸 cell.transform.SetParent(transform); cell.transform.localScale = Vector3.one * 0.8f; // 取得細胞與細胞位置的變形元件 RectTransform rectCell = cell.GetComponent <RectTransform>(); RectTransform rectPosition = cellsPosition[countCell]; cell.GetComponent <Button>().interactable = false; cell.enabled = false; // 當距離大於 10 時,持續移動到正確位置 while (Vector2.Distance(rectCell.anchoredPosition, rectPosition.anchoredPosition) > 10) { rectCell.anchoredPosition = Vector2.Lerp(rectCell.anchoredPosition, rectPosition.anchoredPosition, Time.deltaTime * 100); yield return(null); } rectCell.anchoredPosition = rectPosition.anchoredPosition; // 如果 細胞 大於 一顆時 if (countCell > 0) { // 取得前一顆與當前細胞名稱 string prevCell = cells[countCell - 1].name; string currentCell = cell.name; // 如果 前一顆 與 當前 名稱相同 = 正確 if (prevCell == currentCell) { StartCoroutine(Lv3_Scientist.instance.Correct()); } // 否則 前一顆 與 當前 名稱不相同 = 錯誤 else { StartCoroutine(Lv3_Scientist.instance.Wrong()); } } // 否則 沒有任何細胞時 正確 else if (countCell == 0) { StartCoroutine(Lv3_Scientist.instance.Correct()); } // 細胞添加到清單內並將編號遞增 cells.Add(cell); countCell++; //CheckThreeSameCell(); CheckTwoSameCell(); } }
/// <summary> /// 生成細胞 /// </summary> private void SpawnCell() { int count = Random.Range(1, 4); // 隨機生成初始細胞 1 - 3 顆 for (int i = 0; i < count; i++) // 迴圈執行 1 - 3 顆 { int randomCell = Random.Range(0, Lv3_Scientist.instance.cells.Length); // 根據細胞長度取得隨機細胞 if (i > 0) // 如果 是第二顆以上 判斷有沒有重複 { string namePrev = cells[i - 1].name; // 取得前一顆名稱 string nameCurr = Lv3_Scientist.instance.cells[randomCell].name + "(Clone)"; // 取得當前隨機的細胞 - 加上 (Clone) 是因為前一顆是生成的細胞 while (namePrev == nameCurr) // 如果名稱相同就持續隨機 { randomCell = Random.Range(0, Lv3_Scientist.instance.cells.Length); // 隨機取得細胞 nameCurr = Lv3_Scientist.instance.cells[randomCell].name + "(Clone)"; // 更新隨機細胞名稱 } } GameObject goCell = Lv3_Scientist.instance.cells[randomCell]; // 取得隨機細胞 GameObject spawnCell = Instantiate(goCell); // 生成隨機細胞 Lv3_DragObject cell = spawnCell.GetComponent <Lv3_DragObject>(); // 取得隨機細胞的細胞元件 - 拖拉 cell.transform.SetParent(transform); // 設定細胞為子物件 cell.transform.localScale = Vector3.one * 0.8f; // 調整尺寸 RectTransform rectCell = cell.GetComponent <RectTransform>(); // 取得細胞 RectTransform rectPosition = cellsPosition[countCell]; // 細胞位置的變形元件 cell.GetComponent <Button>().interactable = false; // 設定不能點擊 cell.enabled = false; // 關閉細胞元件 rectCell.anchoredPosition = rectPosition.anchoredPosition; // 設定座標 cells.Add(cell); // 細胞添加到清單內 countCell++; // 編號遞增 Lv3_Scientist.totalCreateCell++; // 細胞總數增加 } }