using System.Collections; using System.Collections.Generic; using UnityEngine; public class tetrominoUserControl : MonoBehaviour { public GameObject activeTetromino; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { if (Input.GetButtonDown("tetrisMoveLeft") && activeTetromino != null) { if (!checkMoveCollisions(Vector2.left)) { activeTetromino.gameObject.transform.position += Vector3.left * 1.0f; GetComponent().Play(); } } if (Input.GetButtonDown("tetrisMoveRight") && activeTetromino != null) { if (!checkMoveCollisions(Vector2.right)) { activeTetromino.gameObject.transform.position += Vector3.right * 1.0f; GetComponent().Play(); } } if (Input.GetButtonDown("tetrisDrop") && activeTetromino != null) { if (!checkMoveCollisions(Vector2.down)) { activeTetromino.gameObject.transform.position += Vector3.down * 1.0f; GetComponent().Play(); } } if (Input.GetButtonDown("tetrisRotateLeft") && activeTetromino != null) { activeTetromino.gameObject.transform.Rotate(0,0,90,Space.World); GetComponent().Play(); } if (Input.GetButtonDown("tetrisRotateRight") && activeTetromino != null) { activeTetromino.gameObject.transform.Rotate(0,0,-90,Space.World); GetComponent().Play(); } } public void setActiveTetromino(GameObject tetromino) { activeTetromino = tetromino; } public void unsetActiveTetromino() { activeTetromino = null; } public bool checkMoveCollisions(Vector2 direction) { bool wouldCollide = false; foreach (Transform child in activeTetromino.transform) { RaycastHit2D collision = Physics2D.Raycast(child.position, direction, 1.0f); if (collision.collider != null && collision.collider.transform.parent != child.parent) { wouldCollide = true; } } if (wouldCollide == true) { return true; } else { return false; } } }