IEnumerator SpawnObject(NELevel lv, GameObject ob, Vector3 point) { yield return(new WaitForSeconds(Random.Range(0, lv.delay))); GameObject g = Instantiate(ob, point, Quaternion.identity, targetPool.transform); g.transform.eulerAngles += (Vector3.forward * Random.Range(0, 360)); g.GetComponent <Rigidbody2D>().velocity = Vector2.up * lv.power; g.GetComponent <Rigidbody2D>().gravityScale = lv.power * lv.power / distance; g.GetComponent <Rigidbody2D>().angularVelocity = Random.Range(-20f, 20f); }
void Spawn(NELevel lv) { //곰 양 정하기 int _amount = lv.amount[Random.Range(0, lv.amount.Length)]; //타겟 인덱스 정하기 int[] targetIndex = new int[lv.row * lv.colum]; for (int i = 0; i < lv.row * lv.colum; ++i) { targetIndex[i] = i; } Shuffle(targetIndex); //열 정하기 int[] _row = new int[lv.row]; int[] tmp = Enumerable.Range(0, spawnerLine.Length).ToArray(); Shuffle(tmp); for (int i = 0; i < _row.Length; ++i) { _row[i] = tmp[i]; } //오브젝트 생성 int length = targetIndex.Length; for (int i = 0; i < length; ++i) { Vector3 sp = spawnerLine[_row[targetIndex[i] / lv.colum]].transform.GetChild(0).position; Vector3 ep = spawnerLine[_row[targetIndex[i] / lv.colum]].transform.GetChild(1).position; Vector3 point = sp + ((ep - sp) / (float)lv.colum) * ((targetIndex[i] % lv.colum) + 0.5f); if (i < _amount) { //곰 만들기 StartCoroutine(SpawnObject(lv, target[lv.color > Random.Range(0f, 1f) ? 1 : 0], point)); } else { //보록화시 만들기 StartCoroutine(SpawnObject(lv, obstacle[lv.color > Random.Range(0f, 1f) ? 1 : 0], point)); } } }