// 指定したオブジェクトを先頭に public void Sort(OBJECT_SHAPE first) { // �擪�ɂ���I�u�W�F�N�g��index�擾 int firstid = 0; GameObject firstobj = null; for (int i = 0; i < gObjectList.Count; i++) { if (gObjectList[i].GetComponent <CRotateObject>().Get_Shape() == first) { firstobj = gObjectList[i]; firstid = i; break; } } if (firstid == 0) { return; } // �ז��ȃI�u�W�F�N�g������ for (int i = 0; i < firstid; i++) { GameObject g = gObjectList[0]; g.GetComponent <CRotateObject>().Set_isAccele(true); Accele(g); } }
// Start is called before the first frame update void Start() { COrderManager.Instance.CreateOrder(Level[iLevel].iOrderNum); CClearLampManager.Instance.CreateLamp(Level[iLevel].iOrderNum); // オブジェクト展開 OBJECT_SHAPE first = COrderManager.Instance.Get_Order(0); CObjectManager.Instance.AddCreateList(first); CObjectManager.Instance.Create(Level[iLevel].iObjectNum - 1); // タイマーゲット gTimer = GameObject.Find("PFB_Number"); gScore = GameObject.Find("PFB_ScoreObj"); gScore.GetComponent <CScore>().Set_iScoreParam(Level[iLevel].iGoal); fStartTime = gTimer.GetComponent <CNumberManager>().Get_fTime(); }
// 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(); } }
public void AddCreateList(OBJECT_SHAPE first) { CreateList.Add(first); }
// 形状setter public void Set_Shape(OBJECT_SHAPE s) { Shape = s; }
void OnTriggerEnter(Collider col) { // �ʉ߃I�u�W�F�N�g���� if (col.gameObject.tag == "RotateObject") { GetComponent <CCreateEffect>().CreateEffect(); OBJECT_SHAPE order = csOrderManager.Get_Order(iPassNum); // �w�߂ƈ�v if (order == col.gameObject.GetComponent <CRotateObject>().Get_Shape()) { iMatchNum++; CClearLampManager.Instance.Lighting(iPassNum, Color.green); } else { CClearLampManager.Instance.Lighting(iPassNum, Color.red); } // �ʉ߂����I�u�W�F�N�g��폜 CObjectManager.Instance.Remove(col.gameObject); Destroy(col.gameObject); //Debug.Log("hit"); iPassNum++; int ordernum = csOrderManager.Get_iOrderNum(); // �w�ߐ��̃I�u�W�F�N�g���ʉ߂����烊�Z�b�g if (iPassNum == ordernum) { if (iMatchNum == ordernum) { // �N���A�X�^���v���� //Instantiate(gClear, new Vector3(20, 0, -10 + iClearNum * 5), // Quaternion.Euler(0, 180, 0)); //========== 2021/5/09 // �X�R�A��L�^����̂ɕK�v�Ȃ̂ő����܂����@by���X�� CScore.AddScore(); CCreateTrail.Create(); //-- 2021.5.15�lj� sasaki gPanelGreen.SetActive(true); //Debug.Log("SE!!"); aAudioSourceGreen.PlayOneShot(aSEClear); CLevelManager.Instance.UpdateLevel(); // �w�ߐ��� csOrderManager.CreateOrder(CLevelManager.Instance.Get_iOrderNum()); CClearLampManager.Instance.CreateLamp(CLevelManager.Instance.Get_iOrderNum()); iClearNum++; } else { //-- 2021.5.15�lj� sasaki gPanelRed.SetActive(true); //Debug.Log("SE!!"); aAudioSourceRed.PlayOneShot(aSEMiss); } // �V�����I�u�W�F�N�g���� CObjectManager.Instance.Create(ordernum); CClearLampManager.Instance.LightingOff(); csGateTimerController.Reset(); gGateTimerController.transform.LookAt(new Vector3(0, 0, 10)); Destroy(this.gameObject); } } }
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; } }
void OnTriggerEnter(Collider col) { // �ʉ߃I�u�W�F�N�g���� if (col.gameObject.tag == "RotateObject") { GetComponent <CCreateEffect>().CreateEffect(); GameObject lamp = csOrderManager.Get_gClearLamp(iPassNum); OBJECT_SHAPE order = csOrderManager.Get_Order(iPassNum); // �w�߂ƈ�v if (order == col.gameObject.GetComponent <CRotateObject>().Get_Shape()) { iMatchNum++; lamp.GetComponent <Renderer>().material.color = Color.green; } else { lamp.GetComponent <Renderer>().material.color = Color.red; } // �ʉ߂����I�u�W�F�N�g��폜 CObjectManager.Instance.Remove(col.gameObject); CObjectManager.Instance.AcceleRemove(col.gameObject); Destroy(col.gameObject); Debug.Log("hit"); iPassNum++; int ordernum = csOrderManager.Get_iOrderNum(); // �w�ߐ��̃I�u�W�F�N�g���ʉ߂����烊�Z�b�g if (iPassNum == ordernum) { if (iMatchNum == ordernum) { // �N���A�X�^���v���� //Instantiate(gClear, new Vector3(20, 0, -10 + iClearNum * 5), // Quaternion.Euler(0, 180, 0)); //========== 2021/5/09 // �X�R�A��L�^����̂ɕK�v�Ȃ̂ő����܂����@by���X�� //CScore.AddScore(); CCreateTrail.Create(); //-- 2021.5.15�lj� sasaki gPanelGreen.SetActive(true); // �w�ߐ��� csOrderManager.CreateOrder(3); iClearNum++; } else { for (int i = 0; i < ordernum; i++) { GameObject l = csOrderManager.Get_gClearLamp(i); l.GetComponent <Renderer>().material.color = Color.white; } //-- 2021.5.15�lj� sasaki gPanelRed.SetActive(true); } // �V�����I�u�W�F�N�g���� CObjectManager.Instance.Create(3); csGateTimerController.Reset(); gGateTimerController.transform.LookAt(new Vector3(0, 0, 10)); Destroy(this.gameObject); } } }
// 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); } //} }