예제 #1
0
    // 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
        }
    }
예제 #2
0
    // 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
        }
    }
예제 #3
0
    //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;
        }
    }