Respuestas:
FixedUpdate
puede correr más rápido o más lento que Update
dependiendo de su configuración. Eso dependerá de la carga (qué tan rápido se Update
está ejecutando) y la velocidad que haya establecido FixedUpdate
(que se encuentra en Edición-> Configuración del proyecto-> Tiempo). Idealmente, dado que Update
se ejecuta una vez por cuadro, aquí es donde desea capturar la entrada. Si necesita actuar sobre la entrada en el FixedUpdate
método (como el control de los cuerpos de física), establezca banderas y Update
luego maneje en FixedUpdate
:
bool leftMouseDown = false;
void Update()
{
if(Input.GetMouseButtonDown(0))
leftMouseDown = true;
}
void FixedUpdate()
{
if(leftMouseDown )
{
//update physics bodies with input
leftMouseDown = false;
}
}
Todavía es una buena idea controlar la física desde el FixedUpdate
método, ya que es poco probable que la física deba actualizarse con tanta frecuencia, y la física en una actualización fija es mucho más fácil de predecir ( determinismo ) que la física en una actualización variable.
FixedUpdate
. Esa es una de esas cosas que necesita algunas pruebas de juego para realmente entender qué "se siente" bien.
Necesitas entender lo que hace cada uno. Update()
se llama con la mayor frecuencia posible (no estoy seguro, tal vez se puede limitar), de cualquier manera, cada fotograma. FixedUpdate()
se llama cada cantidad de tiempo constante (por lo tanto, "fijo").
La entrada entra Update()
, tan simple como eso (porque, como notó, FixedUpdate()
podría no detectar el evento de entrada). Sin embargo, la lógica del juego podría entrar en cualquiera de los dos. La física debe ser determinista y es por eso que debería estar dentro FixedUpdate()
. Otras cosas no tienen que hacerlo. Dependiendo del uso, debe decidir qué función es apropiada.
Aunque vale la pena decir que algunas aplicaciones tienen toda la actualización de la lógica del juego FixedUpdate()
(incluso fuera de Unity
), se llama "bucle de juego de paso fijo". Tener todo el código de actualización en una función de paso fijo le da determinismo y hace que sea más probable que su aplicación se comporte de la misma manera cada vez (y en cada dispositivo). También permite algunas características sofisticadas, como las repeticiones.