コード例 #1
0
    void GetNewGhost()
    {
        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        ghost = blockFactory.GetNextBlock(mousePos);

        ghostCollider = ghost.GetComponent <BoxCollider2D>();
        float width  = ghostCollider.bounds.size.x;
        float height = ghostCollider.bounds.size.y;

        dimensions            = new Vector2(width, height);
        ghostCollider.enabled = false;
    }
コード例 #2
0
 // Use this for initialization
 void Start()
 {
     blockFactory = new BlockFactory(BLOCKSMALL, BLOCKSTICK, BLOCKL, BLOCKSQUARE
                                     , MATRED, MATBLUE, MATGREEN);
     initGrid();
     // get the active block
     //activeBlock = GameObject.FindGameObjectWithTag("Player");
     activeBlock = (GameObject)GameObject.Instantiate(blockFactory.GetNextBlock(), new Vector3(0, 0, 1), Quaternion.identity);
     activeBlock.transform.position = new Vector3(0, 0, 1);
     foreach (MeshRenderer mr in activeBlock.GetComponentsInChildren <MeshRenderer>())
     {
         Debug.Log("here");
         mr.material = MATBLUE;
     }
 }
コード例 #3
0
    // Update is called once per frame
    void Update()
    {
        if (!isMoving && !isRotating)
        {
            if (Input.GetKeyDown(KeyCode.LeftArrow))
            {
                Vector3    futurePos = activeBlock.transform.position + new Vector3(-1, 0, 0);
                Quaternion futureRot = activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothMove(activeBlock.transform.position, futurePos);
                }
            }
            else if (Input.GetKeyDown(KeyCode.RightArrow))
            {
                Vector3    futurePos = activeBlock.transform.position + new Vector3(1, 0, 0);
                Quaternion futureRot = activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothMove(activeBlock.transform.position, futurePos);
                }
            }
            else if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                Vector3    futurePos = activeBlock.transform.position + new Vector3(0, 1, 0);
                Quaternion futureRot = activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothMove(activeBlock.transform.position, futurePos);
                }
            }
            else if (Input.GetKeyDown(KeyCode.DownArrow))
            {
                Vector3    futurePos = activeBlock.transform.position + new Vector3(0, -1, 0);
                Quaternion futureRot = activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothMove(activeBlock.transform.position, futurePos);
                }
            }
            else if (Input.GetKeyDown(KeyCode.Q))
            {
                Vector3    futurePos = activeBlock.transform.position;
                Quaternion futureRot = Quaternion.Euler(0, 0, 90) * activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothRotate(activeBlock.transform.rotation, futureRot);
                }
            }
            else if (Input.GetKeyDown(KeyCode.W))
            {
                Vector3    futurePos = activeBlock.transform.position;
                Quaternion futureRot = Quaternion.Euler(90, 0, 0) * activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothRotate(activeBlock.transform.rotation, futureRot);
                }
            }
            else if (Input.GetKeyDown(KeyCode.E))
            {
                Vector3    futurePos = activeBlock.transform.position;
                Quaternion futureRot = Quaternion.Euler(0, 0, -90) * activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothRotate(activeBlock.transform.rotation, futureRot);
                }
            }
            else if (Input.GetKeyDown(KeyCode.A))
            {
                Vector3    futurePos = activeBlock.transform.position;
                Quaternion futureRot = Quaternion.Euler(0, 90, 0) * activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothRotate(activeBlock.transform.rotation, futureRot);
                }
            }
            else if (Input.GetKeyDown(KeyCode.S))
            {
                Vector3    futurePos = activeBlock.transform.position;
                Quaternion futureRot = Quaternion.Euler(-90, 0, 0) * activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothRotate(activeBlock.transform.rotation, futureRot);
                }
            }
            else if (Input.GetKeyDown(KeyCode.D))
            {
                Vector3    futurePos = activeBlock.transform.position;
                Quaternion futureRot = Quaternion.Euler(0, -90, 0) * activeBlock.transform.rotation;
                if (!IsPositionBlocked(futurePos, futureRot))
                {
                    SmoothRotate(activeBlock.transform.rotation, futureRot);
                }
            }

            fallSpeed = defaultFallSpeed;
            if (Input.GetKey(KeyCode.Space))
            {
                fallSpeed = 20f;
            }
            //Debug.Log (fallSpeed);
        }
        else
        {
            if (isMoving)
            {
                SmoothMove();
            }
            else if (isRotating)
            {
                SmoothRotate();
            }
        }
        if (isFalling)
        {
            activeBlock.transform.position += new Vector3(0, 0, fallSpeed * Time.deltaTime);
            if (activeBlock.transform.position.z >= zNextCheckPoint)
            {
                zNextCheckPoint++;

                Vector3    futurePos = activeBlock.transform.position + new Vector3(0, 0, 1);
                Quaternion futureRot = activeBlock.transform.rotation;
                if (IsPositionBlocked(futurePos, futureRot))
                {
                    activeBlock.transform.position = new Vector3(
                        (int)Mathf.Round(activeBlock.transform.position.x),
                        (int)Mathf.Round(activeBlock.transform.position.y),
                        (int)Mathf.Round(activeBlock.transform.position.z));
                    SetPositionBlocked();

                    activeBlock     = (GameObject)GameObject.Instantiate(blockFactory.GetNextBlock(), new Vector3(0, 0, 1), Quaternion.identity);
                    zNextCheckPoint = 1;
                }
            }
        }
    }