Пример #1
0
    private IEnumerator TransitionFromDownTheRabbitHole(DownTheRabbitHole rabbitHole)
    {
        State          = SceneState.TransitioningTo;
        Alice          = rabbitHole.Alice;
        MainCamera     = rabbitHole.MainCamera;
        GradientSkybox = rabbitHole.GradientSkybox;

        while (rabbitHole.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);
        GradientSkybox.ChangeIntensity(1, 3);

        ActivateObjects();

        Joker.StartCoroutine(Joker.MoveTo(Joker.transform.position + new Vector3(0, 0, 5)));
        Joker.StartCoroutine(Joker.LookAt(Alice.transform.position, Vector3.up));

        while (Joker.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        MainCamera.StartCoroutine(MainCamera.Follow(Alice.gameObject, PositionOffsets[0]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));

        State = SceneState.Active;
        StartCoroutine(Game());
    }
Пример #2
0
    private IEnumerator TransitionFromFlowerGarden(FlowerGarden flowerGarden)
    {
        State          = SceneState.TransitioningTo;
        Alice          = flowerGarden.Alice;
        MainCamera     = flowerGarden.MainCamera;
        GradientSkybox = flowerGarden.GradientSkybox;

        while (flowerGarden.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);
        GradientSkybox.ChangeIntensity(1, 3);

        Alice.Animator.SetBool("IsMoving", false);
        ActivateObjects();
        Star = SceneObjects[2];
        Star.SetActive(false);

        Joker.StartCoroutine(Joker.MoveTo(Joker.transform.position + new Vector3(0, 0, 5)));
        Joker.StartCoroutine(Joker.LookAt(Alice.transform.position, Vector3.up));

        while (Joker.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        MainCamera.StartCoroutine(MainCamera.Follow(Alice.gameObject, PositionOffsets[0]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));

        State = SceneState.Active;
        StartCoroutine(Game());
    }
    void Start()
    {
        uiCanvas         = GameObject.Find(CANVAS_UI_NAME);
        resultCanvas     = GameObject.Find(CANVAS_RESULT_NAME);
        assetsManager    = FindObjectOfType <AssetsManager>();
        cameraController = FindObjectOfType <CameraController>();
        skyboxController = FindObjectOfType <SkyboxController>();
        scoreText        = GameObject.Find(UI_TEXT_SCORE).GetComponent <TextMeshProUGUI>();
        resultScoreText  = GameObject.Find(UI_TEXT_SCORE_RESULT).GetComponent <TextMeshProUGUI>();
        bestScoreImage   = GameObject.Find(UI_IMAGE_BEST_SCORE);

        // 重力を設定する
        Physics.gravity = new Vector3(0, initGravity, 0);
        // スコアを設定する
        score          = 1;
        scoreText.text = score.ToString();
        magneCount     = score;
        // レベルアップスコアリストを格納
        levelupScoreList = new List <string>();
        levelupScoreList.AddRange(levelupScoreBaseList);
        //結果画面を非表示
        uiCanvas.SetActive(true);
        resultCanvas.SetActive(false);
        // ゲーム初期状態
        gameState     = GameState.INIT;
        nextGameState = GameState.INIT;
        InitStart();
    }
 // Awake. Persistent.
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
         DontDestroyOnLoad(gameObject);
     }
     else
     {
         Destroy(gameObject);
     }
 }
Пример #5
0
    void Update()
    {
        playerPosition = player.transform.position;
        transform.LookAt(player.transform);

        float alt = UpdateSunPosition();

        SkyboxController.BlendSkyboxes(alt);                                      // Update skybox alpha blending
        SkyboxController.SetDayTexTint(alt);                                      // Tint sky for sunset/-rise
        float intensityScalar = (alt < 0) ? Mathf.Lerp(0, 1, 1 - alt / -20F): 1F; // 20 deg below horizon is arbitrary

        GetComponent <Light>().intensity = initIntensity * intensityScalar;
        SkyboxController.IsDaytime       = alt > 0;
    }
    void Start()
    {
        _fireplace_controller = GameObject.Find("Fireplace").GetComponent <FireplaceController>();

        _sun_controller = GameObject.Find("Sun Light").GetComponent <LightController>();

        _skybox_controller = GetComponent <SkyboxController>();

        _audio_source             = gameObject.AddComponent <AudioSource>();
        _audio_source.loop        = false;
        _audio_source.playOnAwake = false;
        _audio_source.priority    = 256; // top priority

        _audio_source_2             = gameObject.AddComponent <AudioSource>();
        _audio_source_2.loop        = false;
        _audio_source_2.playOnAwake = false;
        _audio_source_2.priority    = 256; // top priority

        _voice_stopped = false;

        if (_clips.Length > 0)
        {
            _audio_lines = new AudioLine[_clips.Length];
            for (int i = 0; i < _clips.Length; i++)
            {
                // _audio_lines[i] = new AudioLine(_clips[i]);
                _audio_lines[i] = new AudioLine
                {
                    _clip    = _clips[i],
                    _seconds = 2.5f,
                    _played  = false,
                };

                if (i == 0)
                {
                    _audio_lines[i]._seconds = 5f;
                }
            }
        }

        _current = 0;

        _is_end = false;

        _sun_controller.StartSunset();

        // StartCoroutine(WaitAndSurvive(10));
    }
Пример #7
0
    private void KeyboardNavigation()
    {
        // WASD or arrow Keys:
        // W - forward
        // s - backward
        // a - turn left
        // d - turn right
        if (Input.GetKey(KeyCode.W))
        {
            m_rigidbody.MovePosition(transform.position + (transform.forward * -m_pushForce * Time.deltaTime));
            anim.Play("Forward");
            Vector3 deltaPosition = transform.forward * -globalVelocity * Time.deltaTime;
            globalPosition += deltaPosition;
        }
        if (Input.GetKey(KeyCode.S))
        {
            m_rigidbody.MovePosition(transform.position + (transform.forward * m_pushForce * Time.deltaTime));
            anim.Play("Reverse");
            Vector3 deltaPosition = transform.forward * globalVelocity * Time.deltaTime;
            globalPosition += deltaPosition;
        }
        if (Input.GetKey(KeyCode.A))
        {
            Quaternion deltaRotation = Quaternion.Euler(m_eulerAngleVelocity * -Time.deltaTime * 10f);
            m_rigidbody.MoveRotation(m_rigidbody.rotation * deltaRotation);
        }

        if (Input.GetKey(KeyCode.D))
        {
            Quaternion deltaRotation = Quaternion.Euler(m_eulerAngleVelocity * Time.deltaTime * 10f);
            m_rigidbody.MoveRotation(m_rigidbody.rotation * deltaRotation);
        }
        if (Input.GetKey(KeyCode.F))
        {
            string timeFormatted = SkyboxController.GetTimeOfDayFormatted();
            clockUI.GetComponentInChildren <UnityEngine.UI.Text>().text = timeFormatted;

            clockUI.transform.position = eyeCamera.transform.position + eyeCamera.transform.forward * uiControllerDistance;//targetCamera.transform.TransformPoint(uiControllerDistance);
            clockUI.transform.LookAt(eyeCamera.transform);
            clockUI.transform.Rotate(Vector3.up * 180F);
            clockUI.enabled = true;
        }
        else
        {
            clockUI.enabled = false;
        }
    }
Пример #8
0
    private IEnumerator TransitionFromQueenOfHearts(QueenOfHearts queenOfHearts)
    {
        State          = SceneState.TransitioningTo;
        Alice          = queenOfHearts.Alice;
        MainCamera     = queenOfHearts.MainCamera;
        GradientSkybox = queenOfHearts.GradientSkybox;

        while (queenOfHearts.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        Alice.Animator.Play("Sleeping");
        Alice.transform.position = new Vector3(9.3f, 0, 8.5f);
        var lookDir = new Vector3(-1, 0, -0.5f).normalized;

        Alice.StartCoroutine(Alice.LookAt(Alice.transform.position + lookDir, Vector3.up));

        var rabbitHole = new Vector3(3.4f, 0.9f, 21.4f);

        MainCamera.transform.position = rabbitHole;
        MainCamera.transform.LookAt(Alice.transform.position, Vector3.up);

        ActivateObjects();

        GradientSkybox.ChangeIntensity(1);
        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);

        MainCamera.StartCoroutine(MainCamera.MoveTo(PositionOffsets[0]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));

        while (MainCamera.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        MainCamera.StartCoroutine(MainCamera.RotateAround(Alice.transform.position, PositionOffsets[1]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[1]));

        yield return(new WaitForSeconds(5));

        Application.Quit();
    }
Пример #9
0
    private IEnumerator TransitionFromDownTheRabbitHole(DownTheRabbitHole rabbitHole)
    {
        State          = SceneState.TransitioningTo;
        Alice          = rabbitHole.Alice;
        MainCamera     = rabbitHole.MainCamera;
        GradientSkybox = rabbitHole.GradientSkybox;

        while (rabbitHole.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        var triggerFlower = SceneObjects[0].GetComponent <Flower>();

        triggerFlower.gameObject.SetActive(true);
        triggerFlower.StartCoroutine(triggerFlower.Shrink());

        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);
        GradientSkybox.ChangeIntensity(1, 2);

        MainCamera.StartCoroutine(MainCamera.MoveTo(Alice.transform.position + Vector3.up * 5));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));


        while (GradientSkybox.Intensity < 1)
        {
            yield return(new WaitForEndOfFrame());
        }

        ActivateObjects();

        while (Alice.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        MainCamera.StartCoroutine(MainCamera.RotateAround(Alice.transform.position, PositionOffsets[0]));

        State = SceneState.Active;
        StartCoroutine(Game());
    }
Пример #10
0
    /*
     * VRPointer is a simple "point there go there" controller
     */
    private void VRPointer()
    {
        // Controlled by the left controller
        if (m_leftController.triggerPressed)
        {
            // Adjust position
            Vector3 deltaPosition = transform.forward * m_pushForce * Time.deltaTime;
            m_rigidbody.MovePosition(transform.position + deltaPosition);

            // Register change in lat/long
            deltaPosition   = new Vector3(deltaPosition.x, 0, deltaPosition.z).normalized *globalVelocity;
            globalPosition += deltaPosition;

            // Adjust rotation based on the angular difference between the controller and the canoe
            transform.eulerAngles = Vector3.Lerp(transform.eulerAngles, new Vector3(0f, m_leftController.transform.localRotation.eulerAngles.y, 0f), Time.deltaTime);

            if (Vector3.Angle(transform.eulerAngles, new Vector3(0f, m_leftController.transform.localRotation.eulerAngles.y, 0f)) < 0)
            {
                anim.Play("Forward");
            }
            else
            {
                anim.Play("Reverse");
            }
        }

        // Show timeofday ui
        if (m_rightController.gripped)
        {
            string timeFormatted = SkyboxController.GetTimeOfDayFormatted();
            clockUI.GetComponentInChildren <UnityEngine.UI.Text>().text = timeFormatted;

            clockUI.transform.position = m_rightController.transform.position + m_rightController.transform.forward * uiControllerDistance;
            clockUI.transform.LookAt(eyeCamera.transform, Vector3.up);
            clockUI.transform.Rotate(clockUI.transform.up * 180F);
            clockUI.enabled = true;
        }
        else
        {
            clockUI.enabled = false;
        }
    }
    private IEnumerator TransitionFromOpening(Opening opening)
    {
        State          = SceneState.TransitioningTo;
        Alice          = opening.Alice;
        MainCamera     = opening.MainCamera;
        GradientSkybox = opening.GradientSkybox;

        ActivateObjects();
        var triggerFlower = SceneObjects[0].GetComponent <Flower>();

        while (opening.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        while (MainCamera.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        GradientSkybox.ChangeIntensity(10);
        GradientSkybox.ChangeIntensity(0, FallTime);

        MainCamera.StartCoroutine(MainCamera.RotateAround(Alice.transform.position, PositionOffsets[0]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));

        while (GradientSkybox.Intensity > 0)
        {
            yield return(new WaitForEndOfFrame());
        }

        Alice.Animator.SetBool("IsMoving", false);
        Alice.Animator.SetBool("IsFalling", false);
        yield return(new WaitForSeconds(2));

        State = SceneState.Active;
        triggerFlower.transform.position = Alice.transform.position + new Vector3(2, 0, 1);
        triggerFlower.StartCoroutine(triggerFlower.Grow());
    }
Пример #12
0
 // Start is called before the first frame update
 void Start()
 {
     _materialController = GameObject.Find("MaterialController");
     _controllerScript   = _materialController.GetComponent <SkyboxController>();
 }
Пример #13
0
    public void InitPlayer(int index)
    {
        //adjust the Character Controller to fit the Box Collider that SHOULD be included with the suriyan models
        box = player.GetComponent <BoxCollider>();
        Vector3 vec  = new Vector3(1, 1, 1);
        Vector3 vec2 = new Vector3(1, 1, 1);

        if (box == null)
        {
            Debug.Log("Could not Get Box Collider component.");
        }
        else
        {
            vec  = box.size;
            vec2 = box.center;
        }
        charControl = player.AddComponent <CharacterController> () as CharacterController;
        if (charControl != null)
        {
            charControl.radius = (vec.x + vec.y + vec.z) * 0.33f * 0.33f;             // average all three box collider dimensions, then take a third of that
            charControl.center = new Vector3(0, (vec2.y), 0);
            charControl.height = vec2.y + 0.3f;
            //set the y value for when player block comes back up
            yStandCapture = box.center.y;
            yStandLatch   = false;
        }

        anim   = player.GetComponent <Animator>();
        animId = Animator.StringToHash("animation");

        moveDirClamp  = player.transform.position;
        lookDirClamp  = player.transform.position;
        moveDirection = Vector3.zero;
        jumpCtr       = 0;   // may be redundant. im paranoid at this point
        jumpDist      = 0.0f;
        //setPlaneOnce = true;
        landOnce           = true;
        player.tag         = "Player";
        jumpAmp            = 2.0f;
        playerStuckOnce    = false;
        playerDieSoundOnce = false;

        //character info stuff
        CharInfo c = player.GetComponentInChildren <CharInfo>();

        if (c == null)
        {
            Debug.Log("No Character Info found");
        }

        cName           = c.Name;
        scaleFactor     = c.ScaleFactor;
        colorA          = c.colorA;
        colorB          = c.colorB;
        DoAvatarScaling = c.DoAvatarScaling;
        musicLoop       = c.MusicLoop;
        maxDistance     = c.Distance;
        jumpTimes       = c.JumpTimes;
        frozen          = c.worldBottomColor;
        c.level         = GameSaver.gSaver.charLevel[index];
        charLevel       = c.level;

        //calculate end level coin counter
        endLevelCoinCounter  = 0;
        maxEndRoundCoinCount = 3 * 5 * charLevel;

        skyBox = GameObject.FindGameObjectWithTag("SkyBoxController").GetComponent <SkyboxController>();
        if (skyBox == null)
        {
            Debug.Log("Player Controller couldnt get a reference to the skybox controller.");
        }
        else
        {
            skyBox.TopColor    = c.worldTopColor;
            skyBox.BottomColor = c.worldBottomColor;
        }



        //init the distance halo. Need to call InitHalo() below the character info
        HaloScript hScript = halo.GetComponent <HaloScript>();

        if (hScript == null)
        {
            Debug.Log("InitPlayer() couldnt get a reference to the halo script");
        }
        else
        {
            hScript.InitHalo(maxDistance);
            halo.SetActive(true);
        }



        //update the jump x side bar ui text
        Text jumpX = GameObject.FindGameObjectWithTag("uiJumpTimes").GetComponent <Text>();

        if (jumpX != null)
        {
            string str = "Jump X" + jumpTimes.ToString();
            jumpX.text = str;
        }

        //god im not proud of this. shitty design work
        //update the sprite for the progress bar
        Image           bar = GameObject.FindGameObjectWithTag("uiProgressIndicator").GetComponent <Image>();
        MenuButton      foo = GameObject.FindGameObjectWithTag("MenuButton").GetComponent <MenuButton>();
        CharacterButton b;

        GameObject[] butts = GameObject.FindGameObjectsWithTag("uiCharButton");
        if (butts != null)
        {
            foreach (GameObject g in butts)
            {
                b = g.GetComponent <CharacterButton>();
                if (b != null)
                {
                    if (b.charIndex == gScript.GetPlayerIndex())
                    {
                        if (bar != null)
                        {
                            bar.sprite = b.GetSprite();
                        }
                        if (foo != null)
                        {
                            foo.SetCharSelected(gScript.GetPlayerIndex(), b.GetSprite());
                        }
                    }
                }
            }
        }

        SetCharacterName(cName);
        //SetNumLivesUI();
    }