// Update is called once per frame void Update() { ////always process //camera move //zoom current -> target if (tcdist > ccdist) { ccdist = ccdist + cdd; if (ccdist >= tcdist) { ccdist = tcdist; } } if (tcdist < ccdist) { ccdist = ccdist - cdd; if (ccdist <= tcdist) { ccdist = tcdist; } } //to player //old // Vector3 ppos = plc.getPlayerPos(); // Vector3 cpos = cashTransform.position; // cpos.x = ppos.x; // cpos.z = ppos.z - 29; // cashTransform.position = cpos; Vector3 ppos = plc.getPlayerPos(); const float cpxdir = 127.0f; //camera pos angle float cxdir = 53.0f; //camera angle base //fix pos float cdist = ccdist; float cx = ppos.x; float cz = Mathf.Cos((360 - cpxdir) * Mathf.Deg2Rad) * 1.0f * cdist; float cy = Mathf.Sin(cpxdir * Mathf.Deg2Rad) * 1.0f * cdist; cz = ppos.z + cz; cy = ppos.y + cy - 3.0f; Vector3 cpos = cashTransform.position; cpos.x = cx; cpos.y = cy; cpos.z = cz; cashTransform.position = cpos; //fix angle cxdir = cxdir + (cdist - cdzoomout); //adjust at zoom cashTransform.rotation = Quaternion.Euler(new Vector3(cxdir, 0.0f, 0.0f)); ////interval process //interval count intervalCnt++; if (intervalCnt >= 2) { intervalCnt = 0; //nop } }
// Update is called once per frame void Update() { ////always process //move seq switch (movseq) { case movwakeup: //wakeup //nop break; case movthink: //think //action if (movcnt == 0) { thinkwait = Random.Range(10, 50); } movcnt++; if (movcnt >= thinkwait) { //seq movseq = movrotate; movcnt = 0; //rotate int tmp = Random.Range(0, 2); if (tmp == 0) { rotatedir = 0; } else { rotatedir = 1; } movcnt = 0; rotatecnt = Random.Range(30, 60); actcnt = 0; } //stop cashRigidbody.velocity = Vector3.zero; break; case movrotate: //rotate const float ydd = 5.0f; if (rotatedir == 0) { ytdir = ytdir + ydd; ycdir = ytdir; } else { ytdir = ytdir - ydd; ycdir = ytdir; } //action const int actdir = 4; actcnt++; if (actcnt >= 3) { switch (actseq) { case 0: xdir = xdir - actdir; zdir = zdir + actdir; actseq++; break; case 1: xdir = xdir - actdir; zdir = zdir - actdir; actseq++; break; case 2: xdir = xdir + actdir; zdir = zdir - actdir; actseq++; break; case 3: xdir = xdir + actdir; zdir = zdir + actdir; actseq = 0; break; default: break; } } //movcnt movcnt++; if (movcnt >= rotatecnt) { //mov movseq = movthink; movcnt = 0; //action xdir = 0; zdir = 0; } //stop cashRigidbody.velocity = Vector3.zero; break; case movfind: //find movcnt++; if (movcnt == 1) { //direction to player from ant //get to hiari dir float xdistance, ydistance, zdistance; float direction, direction2; Vector3 hpos; const float doffset = 90.0f; hpos = cashTransform.position; Vector3 ppos = plc.getPlayerPos(); xdistance = (ppos.x) - (hpos.x); //player,hiari x distance zdistance = (ppos.z) - (hpos.z); //player,hiari z distance if ((xdistance == 0) && (zdistance == 0)) //for zero exception { xdistance = 0.0001f; } direction = Mathf.Atan2(zdistance, xdistance) * Mathf.Rad2Deg; //distance -> direction float hiadir = direction; if (hiadir < 0) { hiadir = hiadir + 360.0f; } hiadir = (360 - hiadir) + doffset; //adjust dir if (hiadir > 360) { hiadir = hiadir - 360; } ytdir = hiadir; } //current dir process //dir current -> target const float dirstepf = 2.0f; bool action = false; if ((ytdir > ycdir) && ((ytdir - ycdir) > dirstepf)) { if ((ytdir - ycdir) < 180) { ycdir = ycdir + dirstepf; action = true; } else { ycdir = ycdir - dirstepf; action = true; } } else if ((ytdir < ycdir) && ((ycdir - ytdir) > dirstepf)) { if ((ycdir - ytdir) < 180) { ycdir = ycdir - dirstepf; action = true; } else { ycdir = ycdir + dirstepf; action = true; } } else { ycdir = ytdir; // xdir = 0.0f; // zdir = 0.0f; } if (ycdir > 360) { ycdir = ycdir - 360; } if (ycdir < 0) { ycdir = ycdir + 360; } //action const float actdirf = 6.0f; // if (action == true) { actcnt++; if (actcnt >= 3) { switch (actseq) { case 0: xdir = xdir - actdirf; zdir = zdir + actdirf; actseq++; break; case 1: xdir = xdir - actdirf; zdir = zdir - actdirf; actseq++; break; case 2: xdir = xdir + actdirf; zdir = zdir - actdirf; actseq++; break; case 3: xdir = xdir + actdirf; zdir = zdir + actdirf; actseq = 0; break; default: break; } } // } //stop cashRigidbody.velocity = Vector3.zero; break; case movwaitstart: //wait for field start //nop break; default: break; } //hiari rotate fix //rotate cashTransform.rotation = Quaternion.Euler(new Vector3(zdir, ycdir + 90.0f, xdir)); //90度offsetのため x<->z ////interval process //interval count intervalCnt++; if (intervalCnt >= 2) { intervalCnt = 0; //nop } }
//private //game mode process private void gameModeProcess() { switch (gameMode) { case gmFadein: //fade in if (gmCnt == 0) { //screen fade in scr.setFadein(); //score dsc.updateScore(); } gmCnt++; break; case gmReady: //ready if (gmCnt == 0) { //sound cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_bgm301); } if (gmCnt == 25) { //sound cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_vo_p_start); } gmCnt++; if (gmCnt == 1) { //camera cameraCtr.zoomUp(); //display dsc.setSubmessage("READY..."); //player plc.termWakeup(); //hiari hac.termWakeup(); } if (gmCnt == 60) { gameMode = gmWaitStart; gmCnt = 0; cameraCtr.zoomOut(); //sound cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_vo_p_ready); } break; case gmWaitStart: //wait start gmCnt++; if (gmCnt == 1) { // dsc.setSubmessage ("TAP TO START!"); } if (gmCnt == 50) { //disp tap to start dsc.setSubmessage("TAP TO START!"); } if (gmCnt >= 50) { //tap input to field mode //input start bool inputstart = false; //for unity editor only #if UNITY_EDITOR if (Input.anyKey == true) { if (Input.GetKeyDown(KeyCode.Space)) { inputstart = true; } } #endif //tap if (Input.GetMouseButtonDown(0) == true) { inputstart = true; } //fight start if (inputstart == true) { gameMode = gmField; gmCnt = 0; //camera cameraCtr.zoomOut(); //display dsc.setSubmessage(""); //player plc.setFieldStart(); //hiari hac.setFieldStart(); //sound cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_vo_p_go); } } break; case gmField: //field //encount score process enstime = enstime + Time.deltaTime; if (enstime >= 3.0f) { enstime = 0.0f; cmn_staticData.Instance.timebonus -= 80; if (cmn_staticData.Instance.timebonus <= 0) { cmn_staticData.Instance.timebonus = 0; } else { //sound cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_se_ds100); } dsc.setStatus(); } //position message Vector3 ppos = plc.getPlayerPos(); Vector3 hpos = hac.getHiariPos(); //near? if ((Mathf.Abs(ppos.x - hpos.x) <= 50) && (Mathf.Abs(ppos.z - hpos.z) <= 50)) { //message dsc.setAlertmessage("ポケベルにメッセージ!\n「ヒアリ チカクニイル」"); dsc.setPokebellOn(); //sound if (pokesnd == false) { pokesnd = true; cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_se_pokebell); } } else { //message dsc.setAlertmessage(""); dsc.setPokebellOff(); //sound pokesnd = false; cmn_soundController.Instance.stopLoopSe(); } break; case gmEncount: //encount if (gmCnt == 0) { //sound cmn_soundController.Instance.stopBgm(); pokesnd = false; cmn_soundController.Instance.stopLoopSe(); cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_vo_h_encount); cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_se_h_encount); } if (gmCnt == 45) { cmn_soundController.Instance.playSound(cmn_soundController.Instance.sd_vo_p_encount); } gmCnt++; if (gmCnt == 1) { //camera cameraCtr.zoomUpEncount(); //message dsc.setAlertmessage(""); dsc.setPokebellOff(); // dsc.setSubmessage ("ヒアリ発見!!\n"); dsc.setSubmessage("ヒアリ発見!!"); //hiari hac.setEncount(); } // if (gmCnt == 50) { // //message // dsc.setSubmessage ("ヒアリ発見!!\n(TAP TO SKIP)"); // } if (gmCnt == 120) { //message // dsc.setSubmessage ("生け捕り開始!!\n(TAP TO SKIP)"); dsc.setSubmessage("生け捕り開始!!"); } if (gmCnt == 160) { //mov gameMode = gmFadeout; gmCnt = 0; } if (gmCnt >= 50) { if (Input.GetMouseButtonDown(0) == true) { //mov gameMode = gmFadeout; gmCnt = 0; } } break; case gmFadeout: //fade out if (gmCnt == 0) { //fade out scr.setFadeout(); } gmCnt++; break; case gmLoadScene: //load scene if (gmCnt == 0) { //set battle scene scn.setBattleScene(); } gmCnt++; break; default: break; } }