Creo que no fue explicado en este curso y tras investigar un poco, resulta que no es algo tan difícil de hacer.
Si bien aparentemente hay diferentes formas de hacerlo, me resultó demasiado sencilla esta forma que les compartiré:
- Colocan el siguiente código en donde prefieran, yo lo puse en el MenuManager pero entiendo que puede colocarse en otro código relacionado como el GameManager
public void PauseGame()
{
Time.timeScale = 0;
}
public void ResumeGame()
{
Time.timeScale = 1;
}
- En el public enum del GameState que esta en el GameManager, añaden pause
public enum GameState
{
menu,
inGame,
pause,
gameOver
}
- En el update del GameManager, aquí hice para que el botón de pausa sea Q, pero se puede cambiar a su gusto. También tener en cuenta que si pusieron los void de ResumeGame y PauseGame en otro lugar, eso también deberán tenerlo en cuenta en sus implementaciones.
if (Input.GetKeyDown(KeyCode.Q) && currentGameState == GameState.inGame)
{
MenuManager.sharedInstance.PauseGame();
currentGameState = GameState.pause;
}
else if (Input.GetKeyDown(KeyCode.Q) && currentGameState == GameState.pause)
{
MenuManager.sharedInstance.ResumeGame();
currentGameState = GameState.inGame;
}
Y listo 😄 ¿No es tan difícil verdad? Pueden profundizar más agregando un canvas a la pausa, e incluso experimentar funcionalidades para que el tiempo vaya más lento o sólo se mueva un objeto en el juego. Es muy interesante todo lo que se puede lograr con Unity
Curso de C# para Videojuegos
0 Comentarios
para escribir tu comentario