Commit 9cf3e145 authored by 18손재민's avatar 18손재민

테트리미노 드랍 기능 수정중

parent 93a18e68
...@@ -36,14 +36,18 @@ public class MapManager : MonoBehaviour { ...@@ -36,14 +36,18 @@ public class MapManager : MonoBehaviour {
/// </summary> /// </summary>
public static Room[,] mapGrid = new Room[width, height]; public static Room[,] mapGrid = new Room[width, height];
/// <summary> /// <summary>
/// Tetris Y axis coordinates on Unity.
/// </summary>
public static float[] tetrisYCoord = new float[height];
/// <summary>
/// Current state of game. /// Current state of game.
/// </summary> /// </summary>
public bool gameOver = false; public bool gameOver = false;
/// <summary> /// <summary>
/// Check if tetrimino is falling.
/// </summary>
public bool isTetriminoFalling = false;
/// <summary>
/// Tetris Y axis coordinates on Unity.
/// </summary>
public static float[] tetrisYCoord = new float[height];
/// <summary>
/// Choose to make a boss tetrimino or not. /// Choose to make a boss tetrimino or not.
/// </summary> /// </summary>
public bool spawnBossTetrimino = false; public bool spawnBossTetrimino = false;
...@@ -213,7 +217,14 @@ public class MapManager : MonoBehaviour { ...@@ -213,7 +217,14 @@ public class MapManager : MonoBehaviour {
{ {
for(int i = 0; i < te.rooms.Length; i++) for(int i = 0; i < te.rooms.Length; i++)
{ {
if ((int)te.rooms[i].mapCoord.y > 19)
{
gameOver = true;
Debug.Log("Game Over");
return;
}
mapGrid[(int)te.rooms[i].mapCoord.x, (int)te.rooms[i].mapCoord.y] = te.rooms[i]; mapGrid[(int)te.rooms[i].mapCoord.x, (int)te.rooms[i].mapCoord.y] = te.rooms[i];
} }
} }
/// <summary> /// <summary>
...@@ -337,18 +348,23 @@ public class MapManager : MonoBehaviour { ...@@ -337,18 +348,23 @@ public class MapManager : MonoBehaviour {
MoveTetriminoMapCoord(te, new Vector3(0, -1, 0)); MoveTetriminoMapCoord(te, new Vector3(0, -1, 0));
} }
MoveTetriminoMapCoord(te, new Vector3(0, 1, 0)); MoveTetriminoMapCoord(te, new Vector3(0, 1, 0));
if(te == currentTetrimino) isTetriminoFalling = true;
EndTetrimino(currentTetrimino); StartCoroutine(TetriminoDown(te));
//StartCoroutine(TetriminoDown(te)); //EndTetrimino(currentTetrimino);
} }
/// <summary>
/// End tetrimino's falling and make rooms and new tetrimino.
/// </summary>
/// <param name="te">Tetrimino you want to end.</param>
public void EndTetrimino(Tetrimino te) public void EndTetrimino(Tetrimino te)
{ {
currentTetrimino.transform.position = new Vector3(currentTetrimino.mapCoord.x * tetrisMapSize, tetrisYCoord[(int)currentTetrimino.mapCoord.y], currentTetrimino.mapCoord.z * tetrisMapSize); te.transform.position = new Vector3(te.mapCoord.x * tetrisMapSize, tetrisYCoord[(int)te.mapCoord.y], te.mapCoord.z * tetrisMapSize);
UpdateMap(te); UpdateMap(te);
CreateRoom(currentTetrimino); CreateRoom(te);
DeleteFullRows(); DeleteFullRows();
Destroy(currentGhost.gameObject); Destroy(currentGhost.gameObject);
TS.MakeTetrimino(); TS.MakeTetrimino();
isTetriminoFalling = false;
} }
/// <summary> /// <summary>
/// Get tetrimino down. /// Get tetrimino down.
...@@ -356,18 +372,19 @@ public class MapManager : MonoBehaviour { ...@@ -356,18 +372,19 @@ public class MapManager : MonoBehaviour {
/// <param name="te">Which tetrimino to move.</param> /// <param name="te">Which tetrimino to move.</param>
public IEnumerator TetriminoDown(Tetrimino te) public IEnumerator TetriminoDown(Tetrimino te)
{ {
while(true) while(te.transform.position.y > tetrisYCoord[(int)te.mapCoord.y])
{ {
if(currentTetrimino) yield return new WaitForSeconds(0.2f);
yield return null; te.transform.position += new Vector3(0, -24, 0);
} }
EndTetrimino(currentTetrimino);
} }
/// <summary> /// <summary>
/// Get ghost down. /// Get ghost down.
/// </summary> /// </summary>
/// <param name="ghost">Which ghost to move.</param> /// <param name="ghost">Which ghost to move.</param>
/// <param name="te">Which tetrimino you'd like to sink with ghost.</param> /// <param name="te">Which tetrimino you'd like to sink with ghost.</param>
public void GhostDown(Tetrimino ghost, Tetrimino te) public void GhostControl(Tetrimino ghost, Tetrimino te)
{ {
/*if(ghost.rotatedAngle != te.rotatedAngle) /*if(ghost.rotatedAngle != te.rotatedAngle)
TetriminoRotate(ghost, te.rotatedAngle - ghost.rotatedAngle);*/ TetriminoRotate(ghost, te.rotatedAngle - ghost.rotatedAngle);*/
...@@ -377,7 +394,6 @@ public class MapManager : MonoBehaviour { ...@@ -377,7 +394,6 @@ public class MapManager : MonoBehaviour {
currentGhost.rooms[i].mapCoord = currentTetrimino.rooms[i].mapCoord; currentGhost.rooms[i].mapCoord = currentTetrimino.rooms[i].mapCoord;
currentGhost.rooms[i].transform.position = (currentGhost.rooms[i].mapCoord - currentGhost.mapCoord) * tetrisMapSize + currentGhost.transform.position; currentGhost.rooms[i].transform.position = (currentGhost.rooms[i].mapCoord - currentGhost.mapCoord) * tetrisMapSize + currentGhost.transform.position;
} }
while (IsRightGhost(ghost)) while (IsRightGhost(ghost))
{ {
MoveTetriminoMapCoord(ghost, new Vector3(0, -1, 0)); MoveTetriminoMapCoord(ghost, new Vector3(0, -1, 0));
...@@ -397,6 +413,7 @@ public class MapManager : MonoBehaviour { ...@@ -397,6 +413,7 @@ public class MapManager : MonoBehaviour {
{ {
if(Input.GetKeyDown(KeyCode.Space) && GameManager.gameState == GameManager.GameState.Tetris) if(Input.GetKeyDown(KeyCode.Space) && GameManager.gameState == GameManager.GameState.Tetris)
{ {
isTetriminoFalling = true;
TetriminoMapCoordDown(currentTetrimino); TetriminoMapCoordDown(currentTetrimino);
//StartCoroutine(TetriminoDown(currentTetrimino)); //StartCoroutine(TetriminoDown(currentTetrimino));
} }
...@@ -473,13 +490,21 @@ public class MapManager : MonoBehaviour { ...@@ -473,13 +490,21 @@ public class MapManager : MonoBehaviour {
// Update is called once per frame // Update is called once per frame
void Update() { void Update() {
TetriminoControl(currentTetrimino); if (!gameOver)
currentTetrimino.transform.position = new Vector3(currentTetrimino.mapCoord.x * tetrisMapSize, tetrisYCoord[(int)currentTetrimino.mapCoord.y], currentTetrimino.mapCoord.z * tetrisMapSize);
if(currentGhost != null)
{ {
GhostDown(currentGhost, currentTetrimino); if(!isTetriminoFalling)
currentGhost.transform.position = new Vector3(currentGhost.mapCoord.x * tetrisMapSize, tetrisYCoord[(int)currentGhost.mapCoord.y], currentGhost.mapCoord.z * tetrisMapSize); {
TetriminoControl(currentTetrimino);
if(!isTetriminoFalling)
currentTetrimino.transform.position = new Vector3(currentTetrimino.mapCoord.x * tetrisMapSize, tetrisYCoord[(int)currentTetrimino.mapCoord.y], currentTetrimino.mapCoord.z * tetrisMapSize);
}
if(currentGhost != null)
{
GhostControl(currentGhost, currentTetrimino);
currentGhost.transform.position = new Vector3(currentGhost.mapCoord.x * tetrisMapSize, tetrisYCoord[(int)currentGhost.mapCoord.y], currentGhost.mapCoord.z * tetrisMapSize);
}
//currentTetrimino.transform.position = currentTetrimino.mapCoord * tetrisMapSize + tetrisMapCoord;
} }
//currentTetrimino.transform.position = currentTetrimino.mapCoord * tetrisMapSize + tetrisMapCoord;
} }
} }
...@@ -12,6 +12,7 @@ public class Test : MonoBehaviour { ...@@ -12,6 +12,7 @@ public class Test : MonoBehaviour {
public void ChangeTetrimino() public void ChangeTetrimino()
{ {
Destroy(MM.currentTetrimino.gameObject); Destroy(MM.currentTetrimino.gameObject);
Destroy(MM.currentGhost.gameObject);
TS.MakeTetrimino(); TS.MakeTetrimino();
} }
public void SpawnBossTetrimino() public void SpawnBossTetrimino()
......
...@@ -91,7 +91,6 @@ public class TetriminoSpawner : MonoBehaviour { ...@@ -91,7 +91,6 @@ public class TetriminoSpawner : MonoBehaviour {
{ {
MM.currentGhost.rooms[i].mapCoord = te.rooms[i].mapCoord; MM.currentGhost.rooms[i].mapCoord = te.rooms[i].mapCoord;
} }
MM.TetriminoMapCoordDown(MM.currentGhost);
} }
/// <summary> /// <summary>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment