예제 #1
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (appstate > 0)
            {
                ResetCamera();
                appstate = 0;
            }
            else if (appstate == 0)
            {
                Debug.Log("Application.Quit()");
                Application.Quit();
            }
        }

        if (appstate == 1)
        {
            countdown -= Time.deltaTime;
            if (lerping == false)
            {
                if (countdown <= 0.0f)
                {
                    countdown     = timewait;
                    lerping       = true;
                    startTime     = Time.time;
                    journeyLength = Vector3.Distance(startMarker, endMarker);
                }
            }
            else
            {
                float distCovered = (Time.time - startTime) * speed;
                float fracJourney = distCovered / journeyLength;
                camera.transform.position = Vector3.Lerp(startMarker, endMarker, fracJourney);

                if (foundside == false)
                {
                    int side = cubescript.getside();
                    if (side != 0)
                    {
                        foundside = true;
                        appstate  = 2;
                        countdown = 1f;
                        lerping   = false;
                        Debug.Log("cube side = " + side);
                    }
                }
            }
        }
        else if (appstate == 2)
        {
            countdown -= Time.deltaTime;
            if (lerping == false)
            {
                if (countdown <= 0.0f)
                {
                    countdown     = 1f;
                    lerping       = true;
                    startTime     = Time.time;
                    journeyLength = Vector3.Distance(endMarker, startMarker);
                }
            }
            else
            {
                float distCovered = (Time.time - startTime) * speed;
                float fracJourney = distCovered / journeyLength;
                camera.transform.position = Vector3.Lerp(endMarker, startMarker, fracJourney);
            }

            if (camera.transform.position == startMarker)
            {
                appstate  = 3;
                countdown = 0f;
                lerping   = false;
            }
        }
        else if (appstate == 3)
        {
            countdown -= Time.deltaTime;
            if (lerping == false)
            {
                if (countdown <= 0.0f)
                {
                    countdown     = 1f;
                    lerping       = true;
                    startTime     = Time.time;
                    journeyLength = Vector3.Distance(NaasendMarker, NaasstartMarker);
                }
            }
            else
            {
                float distCovered = (Time.time - startTime) * speed;
                float fracJourney = distCovered / journeyLength;
                NaasHomself.transform.position = Vector3.Lerp(NaasstartMarker, NaasendMarker, fracJourney);
            }

            if (NaasHomself.transform.position == NaasendMarker)
            {
                appstate    = 4;
                speechstart = Time.time;
                speechcount = 0;
            }
        }
        else if (appstate == 4)
        {
            SpeechMesh.enabled       = true;
            SpeechMeshBubble.enabled = true;

            if (Time.time - speechstart > 0.15)
            {
                speechstart = Time.time;
                if (speechcount < sideV[cubescript.getside() - 1].Length)
                {
                    Speech.text = Speech.text + sideV[cubescript.getside() - 1][speechcount++];
                    Debug.Log(Speech.text);
                }
            }
        }
    }