Exemplo n.º 1
0
    void RotBack(int situation)
    {
        switch (situation)
        {
        case 0:
            break;

        case 1:
            teris1.RotBack();
            teris2.RotBack();

            break;

        case 2:
            teris2.RotBack();
            teris2.CheckRotClash(teris1, true);

            break;

        case 3:
            teris1.RotBack();
            teris1.CheckRotClash(teris2, true);
            break;
        }
    }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        if (Game.Instance.gameOver)
        {
            return;
        }
        if (!waitingForNextRound)
        {
            if (Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.A))
            {
                if (teris1 != null)
                {
                    teris1.Move(new Vector3(-1, 0, 0));
                }
                if (teris2 != null)
                {
                    teris2.Move(new Vector3(-1, 0, 0));
                }
                int valid = ValidMove();
                if (valid != 1)
                {
                    Sound.Instance.PlayEffect("移动");
                }
                MoveBack(valid, false);

                teris1.Move(new Vector3(-1, 0, 0));
                teris2.Move(new Vector3(-1, 0, 0));
                MoveBack(ValidMove(), false);
            }
            else if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.D))
            {
                if (teris1 != null)
                {
                    teris1.Move(new Vector3(1, 0, 0));
                }
                if (teris2 != null)
                {
                    teris2.Move(new Vector3(1, 0, 0));
                }
                int valid = ValidMove();
                if (valid != 1)
                {
                    Sound.Instance.PlayEffect("移动");
                }
                MoveBack(valid, false);
            }
            else if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.W))
            {
                if (teris1 != null)
                {
                    teris1.Rot();
                }
                if (teris2 != null)
                {
                    teris2.Rot();
                }
                int  valid   = ValidMove();
                bool rotable = teris1.CheckRotClash(teris2, false);
                if (valid != 1 && rotable)
                {
                    Sound.Instance.PlayEffect("旋转");
                }


                teris1.Move(new Vector3(1, 0, 0));
                teris2.Move(new Vector3(1, 0, 0));

                MoveBack(ValidMove(), false);
            }
            else if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.W))
            {
                teris1.Rot();
                teris2.Rot();

                RotBack(ValidMove());
                teris1.CheckRotClash(teris2, false);
            }

            if (Time.time - previousTime > (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S) ? falltime / 10 : falltime))
            {
                if (teris1 != null)
                {
                    teris1.Move(new Vector3(0, -1, 0));
                }
                if (teris2 != null)
                {
                    teris2.Move(new Vector3(0, -1, 0));
                }
                int valid = ValidMove();

                teris1.Move(new Vector3(0, -1, 0));
                teris2.Move(new Vector3(0, -1, 0));


                MoveBack(ValidMove(), true);

                previousTime = Time.time;
            }
        }
    }