gimm-platformer-project/Assets/Scripts/tetrominoUserControl.cs
2021-10-21 11:06:46 -06:00

92 lines
2.6 KiB
C#

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<AudioSource>().Play();
}
}
if (Input.GetButtonDown("tetrisMoveRight") && activeTetromino != null)
{
if (!checkMoveCollisions(Vector2.right))
{
activeTetromino.gameObject.transform.position += Vector3.right * 1.0f;
GetComponent<AudioSource>().Play();
}
}
if (Input.GetButtonDown("tetrisDrop") && activeTetromino != null)
{
if (!checkMoveCollisions(Vector2.down))
{
activeTetromino.gameObject.transform.position += Vector3.down * 1.0f;
GetComponent<AudioSource>().Play();
}
}
if (Input.GetButtonDown("tetrisRotateLeft") && activeTetromino != null)
{
activeTetromino.gameObject.transform.Rotate(0,0,90,Space.World);
GetComponent<AudioSource>().Play();
}
if (Input.GetButtonDown("tetrisRotateRight") && activeTetromino != null)
{
activeTetromino.gameObject.transform.Rotate(0,0,-90,Space.World);
GetComponent<AudioSource>().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);
// Debug.DrawRay(pieceToCheck.position,Vector3.down,Color.red,1000.0f);
if (collision.collider != null && collision.collider.transform.parent != child.parent)
{
wouldCollide = true;
}
}
if (wouldCollide == true)
{
return true;
}
else
{
return false;
}
}
}