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; }
// 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; } }
// 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; } } } }