Introducción
En este artículo vamos a analizar el método FixedUpdate de Unity el cual permite realizar cambios equiespaciados en el tiempo.
Un método es una función definida en un Script que puede ser ejecutada y realiza la tarea que definimos en su interior. Para saber más sobre métodos en programación puedes leer este artículo o ver un video que resume la información.
En el siguiente vídeo muestro un experimento para observar las diferencias entre UPDATE y FIXEDUPDATE en UNITY
Método FixedUpdate en Unity – MonoBehaviours
La función FixedUpdate está definida en la clase MonoBehaviour y se va a ejecutar automáticamente en intervalos regulares de tiempo si el MonoBehaviour se encuentra activo.
Por defecto, el tiempo entre ejecuciones consecutivas de FixedUpdate es de 20 milisegundos o 0.02 segundos. Este tiempo lo podemos ver y modificar en la pestaña Edit > Project Settings > Time – Fixed Timestep.
Cuando creamos un nuevo Script en Unity, por defecto nos aparecerá algo de código ya escrito. En este código se define una Clase de Programación que se llama igual al nombre que le dimos al Script y que extiende o hereda su comportamiento de MonoBehaviour, esto en términos simples significa que nuestro Script es en sí un MonoBehaviour o un caso particular de MonoBehaviour.
Los MonoBehaviours se pueden agregar a los GameObjects que se encuentran en la jerarquía, esto podemos hacerlo desde el inspector usando el botón «Add Component» o simplemente arrastrando el Script al inspector del GameObject.
Ejecución de la función FixedUpdate
Mientras el juego está corriendo, Unity automáticamente toma todos los MonoBehaviours que hay en la escena y realiza la ejecución de los métodos FixedUpdate cada vez que se cumple el tiempo «Fixed Timestep». De modo que no debemos hacer la ejecución de este método manualmente, el motor se encarga de ello.
Quiere decir que la función FixedUpdate se ejecutará de manera periódica mientras nuestro juego esté corriendo.
Independientemente de los FPS (frames por segundo) de nuestro juego, el método FixedUpdate que se ejecutará en intervalos regulares, 50 veces por segundo si el Fixed Timestep está seteado en 0.02 segundos.
FixedUpdate vs Update
Existe otra función de actualización que se ejecuta automáticamente cada cierto tiempo, se trata de la función Update.
Experimento para entender las diferencias entre Update y FixedUpdate
Conclusión – FixedUpdate para cambios equiespaciados en el tiempo
El método FixedUpdate representa la parte dinámica de un juego en Unity, cuando queremos producir cambios en el tiempo y que estos cambios se apliquen en intervalos regulares, recurrimos a la función FixedUpdate.
Una aplicación típica de esta función es realizar el movimiento de objetos o algunas animaciones que hacemos de manera procedural.
Al mover objetos en FixedUpdate, la velocidad del objeto será la que indiquemos. Si en cambio movemos objetos en la función Update, cuando nuestro juego funcione a más FPS, el objeto se moverá más rápido que cuando el juego funcione más lento.
Es útil entender cómo es el orden de ejecución de los métodos Start, Update y FixedUpdate ya que nos permite identificar distintos momentos en la ejecución del juego.