public void Inverse(GameObject g) { if (!g.GetComponent <CRotateObject>().Get_isInverse() && !g.GetComponent <CRotateObject>().Get_isInverse2()) { // オブジェクトリストから削除 int i; i = Get_iRanking(g); g.GetComponent <CRotateObject>().Set_isInverse(true); Accele(g); g.GetComponent <CRotateObject>().Set_isSort(true); // ���̃I�u�W�F�N�g����������ċl�߂� for (int j = i; j < gObjectList.Count;) { gObjectList[j].GetComponent <CRotateObject>().Set_isAccele(true); Accele(gObjectList[j]); } CRotateObject cs = g.GetComponent <CRotateObject>(); cs.InvDegree(); } }
// オブジェクト生成関数 public void Create(int n) { // �I�u�W�F�N�g������_���ȏ����Ŕz�u List <int> nums = new List <int>(); for (int i = 0; i < CLevelManager.Instance.Get_iObjectNum(); i++) { nums.Add(i); } // �d�����Ȃ��悤�� for (int i = 0; i < CreateList.Count; i++) { nums.Remove((int)CreateList[i]); } for (int i = 0; i < gObjectList.Count; i++) { CRotateObject cro = gObjectList[i].GetComponent <CRotateObject>(); nums.Remove((int)cro.Get_Shape()); } for (int i = 0; i < gAcceleList.Count; i++) { CRotateObject cro = gAcceleList[i].GetComponent <CRotateObject>(); nums.Remove((int)cro.Get_Shape()); } // �������X�g�ɒlj� for (int i = 0; i < n; i++) { int rand = Random.Range(0, nums.Count); CreateList.Add((OBJECT_SHAPE)nums[rand]); nums.RemoveAt(rand); } }
// Update is called once per frame void Update() { // ポーズ画面の時にオブジェクトが生成しないような処理 if (Mathf.Approximately(Time.timeScale, 0f)) { return; } // オブジェクト生成 if (CreateList.Count > 0) { if (iTimer >= 60) { // �d�Ȃ�Ȃ��悤�ɐ����ʒu�� float sd = 180.0f; float rad = 9.0f; RotateState rs = RotateState.OUTSIDE; if (gObjectList.Count > 0) { float ld = gObjectList[gObjectList.Count - 1].GetComponent <CRotateObject>().Get_fDegree(); if (ld >= 190 && ld <= 520) { sd = 180; rad = fOutRadius; rs = RotateState.OUTSIDE; } else { sd = 520; rad = fInRadius; rs = RotateState.INSIDE; } } Vector3 pos = new Vector3(rad * Mathf.Sin((sd + 180) * Mathf.Deg2Rad), 0.0f, rad * Mathf.Cos((sd + 180) * Mathf.Deg2Rad)); // ���� GameObject tmp = Instantiate(gObjectSource[(int)CreateList[0]], pos, Quaternion.Euler(0, 0, 0)); // �p�����[�^�Z�b�g CRotateObject cs = tmp.GetComponent <CRotateObject>(); cs.Set_fDegree(sd); cs.Set_Shape(CreateList[0]); cs.Set_State(rs); tmp.GetComponent <CRotateObject>().Set_isAccele(true); CreateList.RemoveAt(0); gAcceleList.Add(tmp); iTimer = 0; } iTimer++; } if (GameObject.Find("PFB_Gate(Clone)") == null) { OBJECT_SHAPE first = COrderManager.Instance.Get_Order(0); Sort(first); } for (int i = 0; i < gObjectList.Count; i++) { gObjectList[i].GetComponent <CRotateObject>().UpdateObject(); } for (int i = 0; i < gAcceleList.Count; i++) { gAcceleList[i].GetComponent <CRotateObject>().UpdateObject(); } }
void Update() { // フレームごとに総合時間から減算 fTotalTime += Time.deltaTime; // キャストした総合時間を秒数に代入 iSecond = (int)fTotalTime; // テキストに秒数を表示 //tTimer.text = iSecond.ToString("00"); float gatetime = CLevelManager.Instance.Get_fGateTime(); float rad = fTotalTime / gatetime * 360; //Debug.Log(fRotationSpeed); gSecondHand.transform.eulerAngles = new Vector3(90.0f, 0.0f, -rad); //gSecondHand.transform.Rotate(0, 0, rad); //if (GameObject.Find(gGate.name + "(Clone)")) { //tTimer.text = "00"; //} /* 下限値の設定 * if (iSecond <= 0) { * tTimer.text = "00"; * fTotalTime = 0.0f; * }*/ // 時間が来たらまたはプレイヤsss.ーの意思で回収 if (fTotalTime >= gatetime || Input.GetKeyDown(KeyCode.Return) || Input.GetButtonDown(stButton0Name)) { // ゲートが二つ出るのを防ぐ if (GameObject.Find(gGate.name + "(Clone)") == null) { List <GameObject> list = csObjectManager.Get_gObjectList(); if (list.Count > 0) { OBJECT_SHAPE order = csOrderManager.Get_Order(0); // 指令の最初のオブジェクトの位置にゲートを出す GameObject first = null; int i; for (i = 0; i < list.Count; i++) { if (list[i].GetComponent <CRotateObject>().Get_Shape() == order) { first = list[i]; break; } } if (i < list.Count) { float deg = first.GetComponent <CRotateObject>().Get_fDegree(); float subdeg = first.GetComponent <CRotateObject>().Get_fDegreeSub(); deg += 30; Vector3 pos; if (deg >= 330 && deg <= 690) { subdeg = 180; } else { subdeg = 0.0f; } if (deg >= 330 && deg <= 690) { if (deg <= 400 && deg >= 330) { subdeg = 180 + (400 - deg) * 3.0f; } } else { if (deg <= 760 && deg >= 690) { subdeg = (760 - deg) * 3.0f; } } pos.x = 7 * Mathf.Sin((deg + 180) * Mathf.Deg2Rad) + 2 * Mathf.Cos(subdeg * Mathf.Deg2Rad) * Mathf.Sin((deg + 180) * Mathf.Deg2Rad); pos.y = 2 * Mathf.Sin(subdeg * Mathf.Deg2Rad); pos.z = 7 * Mathf.Cos((deg + 180) * Mathf.Deg2Rad) + 2 * Mathf.Cos(subdeg * Mathf.Deg2Rad) * Mathf.Cos((deg + 180) * Mathf.Deg2Rad); GameObject gate = Instantiate(gGate, pos, Quaternion.Euler(0, 90, 0)); CGate cs = gate.GetComponent <CGate>(); CRotateObject cro = first.GetComponent <CRotateObject>(); if (deg >= 330 && deg <= 690) { cs.Set_State(RotateState.INSIDE); if (deg <= 400 && deg >= 330) { cs.Set_isInverse(true); cs.Set_fDegreeSub(180 + (400 - deg) * 3.0f); } } else { cs.Set_State(RotateState.OUTSIDE); if (deg <= 760 && deg >= 690) { cs.Set_isInverse(true); cs.Set_fDegreeSub((760 - deg) * 3.0f); } } cs.Set_fDegree(deg); } } } fTotalTime = gatetime; } }
// Update is called once per frame void Update() { //ポーズ画面の時にオブジェクトが生成しないような処理 if (Mathf.Approximately(Time.timeScale, 0f)) { return; } // ���X�g�ɂ���I�u�W�F�N�g�� if (CreateList.Count > 0) { // ���̊Ԋu��J���Đ������� //if (iTimer >= fInterval / fAcceleSpeed + 30) { if (iTimer >= 60) { // �d�Ȃ�Ȃ��悤�ɐ����ʒu�� float sd = 0.0f; float rad = 9.0f; RotateState rs = RotateState.OUTSIDE; if (gObjectList.Count > 0) { float ld = gObjectList[gObjectList.Count - 1].GetComponent <CRotateObject>().Get_fDegree(); /*if (ld >= 180 && ld <= 520) { * sd = 0; * rad = fOutRadius; * rs = RotateState.OUTSIDE; * } * else { * sd = 0; * rad = fInRadius; * rs = RotateState.INSIDE; * }*/ } Vector3 pos = new Vector3(rad * Mathf.Sin((sd + 180) * Mathf.Deg2Rad), 0.0f, rad * Mathf.Cos((sd + 180) * Mathf.Deg2Rad)); // ���� GameObject tmp = Instantiate(gObjectSource[(int)CreateList[0]], pos, Quaternion.Euler(0, 0, 0)); // �p�����[�^�Z�b�g CRotateObject cs = tmp.GetComponent <CRotateObject>(); cs.Set_fSpeed(fAcceleSpeed); cs.Set_fDegree(sd); cs.Set_Shape(CreateList[0]); cs.Set_State(rs); Accele(tmp); CreateList.RemoveAt(0); iTimer = 0; } iTimer++; } else { // ����������Ƃ��̎��Ԃ�Z�k //iTimer = (int)(fInterval / fSpeed) + 10; } // �w�߂̍ŏ��̃I�u�W�F�N�g���擪�ɂȂ�悤�� //if (gAcceleList.Count == 0 && CreateList.Count == 0) { if (GameObject.Find("PFB_Gate(Clone)") == null) { OBJECT_SHAPE first = COrderManager.Instance.Get_Order(0); Sort(first); } //} }