Atualização vs FixedUpdate

Em Unity, as funções Atualizar e FixedUpdate são usadas para atualizar o comportamento ​​de objetos em uma cena e, embora sirvam a propósitos semelhantes, existem diferenças importantes entre os dois.

'Update'

A função 'Update' é chamada uma vez por quadro e é ideal para lidar com entrada, atualizando objeto posições ​​e realizando a maioria das tarefas de uso geral. Não depende da taxa de quadros, o que significa que pode variar em tempo de execução dependendo do desempenho.

void Update()
{
    // Input handling
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");
    
    // Movement
    Vector3 movement = new Vector3(horizontalInput, 0, verticalInput);
    transform.Translate(movement * speed * Time.deltaTime);
    
    // General-purpose tasks
    // ...
}

No exemplo acima, recuperamos a entrada dos eixos horizontal e vertical e a usamos para controlar o movimento do objeto. O método 'Translate' é usado para mover o objeto na direção especificada a uma velocidade constante. Tarefas de uso geral também podem ser executadas na função 'Update'.

FixedUpdate

A função FixedUpdate é chamada em intervalos de tempo fixos, tornando-a adequada para lidar com cálculos relacionados à física. É independente da taxa de quadros, garantindo um comportamento consistente em diferentes dispositivos e taxas de quadros.

void FixedUpdate()
{
    // Physics calculations
    rb.AddForce(transform.forward * forceMagnitude);
    
    // Other physics-related tasks
    // ...
}

No exemplo acima, aplicamos uma força constante a um componente Rigidbody na direção frontal do objeto. O uso de FixedUpdate garante que os cálculos físicos ocorram em uma taxa fixa, independentemente da taxa de quadros. Isso é importante para manter a simulação física estável.

'Update' vs FixedUpdate

Principais diferenças entre as funções 'Update' e FixedUpdate:

  • 'Update' é chamado uma vez por quadro, enquanto FixedUpdate é chamado em intervalos de tempo fixos.
  • 'Update' é dependente da taxa de quadros, enquanto FixedUpdate é independente da taxa de quadros.
  • 'Update' é adequado para a maioria das tarefas de uso geral, incluindo manipulação de entrada, movimento de objetos e operações não relacionadas à física.
  • FixedUpdate é projetado especificamente para cálculos relacionados à física, como aplicação de forças, ajuste de propriedades do Rigidbody e execução de outras operações baseadas em física.

Conclusão

É importante observar que 'Update' e FixedUpdate podem coexistir no mesmo script, permitindo separar o código relacionado à física de outro código de uso geral. Compreender as diferenças e usar a função apropriada em cada contexto ajuda a garantir um comportamento suave e consistente nos projetos Unity.