Si quieres mover objetos en Unity con precisión, necesitas entender cómo se cuenta el tiempo dentro del motor. El tiempo en Unity no funciona igual que en una animación tradicional, y esa diferencia define la fluidez con la que tu juego se mueve frente al jugador.
¿Por qué el tiempo es clave para mover cosas en Unity?
Mover un objeto en pantalla depende de saber cuánto tiempo ha pasado entre un frame y otro. Sin ese dato, no puedes calcular distancias, velocidades ni transiciones suaves.
Las animaciones funcionan como una secuencia de imágenes que, al reproducirse rápido, generan la ilusión de movimiento. En la animación tradicional, sobre todo en producciones independientes con poco presupuesto, ese intervalo suele ser fijo: 1/12 de segundo, porque se reproducen a 12 frames por segundo.
En un videojuego la historia cambia. El intervalo entre imagen e imagen es variable, y entender esa variabilidad es lo que te permite escribir código que se sienta consistente sin importar el equipo donde corra.
¿Por qué los FPS varían entre computadoras y escenas?
Los frames per second (FPS) dependen de dos factores: la potencia del hardware y la cantidad de cosas que la computadora tiene que renderizar.
Piensa en Cyberpunk 2077. En una PC gamer moderna corre a 60 frames por segundo. En una computadora muy antigua, renderizar un solo frame podría tomar meses. Mismo juego, tiempos radicalmente distintos.
La carga de la escena también pesa. En Minecraft, cuando tu personaje está dentro de su casa, la computadora renderiza pocos cubos y los FPS suben. Cuando subes a un punto alto e intentas ver todo el mapa, el equipo tiene que dibujar muchísimos más bloques y los FPS bajan.
¿Por qué los FPS no son constantes en un juego? Porque el renderizado ocurre en tiempo real y depende del hardware y de cuántos elementos haya en pantalla. Más cosas que dibujar significa más tiempo por frame.
¿Cómo se relaciona el update con el tiempo entre frames?
Aquí entra el ciclo de vida de un script. El método Update se ejecuta una vez antes de que se pinte cada frame. La secuencia es: pintar frame, ejecutar Update, pintar el siguiente frame, ejecutar Update otra vez.
El problema es que el tiempo entre un Update y otro no es estable. Puede comportarse así:
- 1/200 de segundo si tu computadora es muy potente.
- 1/8 de segundo si tu computadora es muy lenta.
- Cualquier valor intermedio dependiendo de la escena.
Esa variabilidad es justo la razón por la que no puedes asumir un intervalo fijo cuando programas movimiento. Si mueves un objeto sumando una cantidad fija por frame, el objeto irá rapidísimo en una PC gamer y lentísimo en una compu vieja.
¿Qué es Update en Unity? Es el método que se ejecuta una vez antes de pintar cada frame. Sirve para actualizar lógica del juego, como movimiento o input, en cada ciclo de renderizado.
¿Por qué no debo mover objetos con valores fijos por frame? Porque el tiempo entre frames cambia según el hardware y la escena. Sin ajustar por tiempo, tu juego correrá distinto en cada computadora.
Animación clásica vs renderizado en tiempo real
En una película o caricatura, el tiempo entre imágenes está predefinido y es constante. En un videojuego, el renderizado ocurre en tiempo real y reacciona a la interactividad: lo que el jugador hace y lo que el motor tiene que dibujar en ese instante.
Por eso contar el tiempo en Unity exige una herramienta distinta a la de una animación tradicional. Necesitas medir cuánto tardó el último frame para que tus cálculos de movimiento se mantengan consistentes.
En la siguiente clase vas a aprender a contar el tiempo de forma accurate dentro de Unity. ¿Cómo crees que el motor te entrega ese dato? Déjame tu hipótesis en los comentarios.