Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

955
Vistas
Unity: ¿en qué casos debo agregar Time.deltaTime?

Soy nuevo en Unity y muestro muchas veces que es necesario Time.deltaTime . ¿En qué casos debo agregarlo? Sé que esto es para que no haya exceso de energía en caso de una actualización rápida de la computadora del marco. Por ejemplo, en el siguiente caso, necesito agregar Time.deltaTime?

 playerRigidbody.AddForce(Vector3.up * 100 * Time.deltaTime, ForceMode.Impulse);

gracias por las respuestas

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En palabras muy fáciles

Time.deltaTime es el tiempo transcurrido desde que se procesó el último fotograma.

Al multiplicar un valor con él, básicamente lo convierte de Something per frame en Something per second .


¿Es necesario?

¡Ahora, si necesita usarlo, depende totalmente de su caso de uso específico! En su caso para AddForce : ¡NO! .

La fuerza influye en la velocidad de un objeto físico. La velocidad en sí ya es un vector absoluto por segundo .

Por lo general, hay dos casos de uso para AddForce :

  • Se llama continuamente pero dentro de FixedUpdate

    Debido a que FixedUpdate no se llama en cada cuadro de todos modos, sino en intervalos fijos de tiempo real (por defecto, 0.02 segundos), no necesitaría Time.deltaTime . El Doc ya proporciona esto en el ejemplo .

  • De todos modos, se llama solo como un solo evento (por ejemplo, saltando)

    Aquí no hay nada continuo, por lo que no necesita ni quiere usar Time.deltaTime ya que un solo evento no puede depender de la velocidad de fotogramas de todos modos.

over 4 years ago · Santiago Trujillo Denunciar

0

Time.deltaTime es la cantidad de segundos que tardó el motor en procesar el cuadro anterior. Su cálculo es bastante simple: utiliza el reloj interno del sistema para comparar la hora del sistema cuando el motor comenzó a procesar el cuadro anterior con la hora del sistema cuando el motor comenzó a procesar el cuadro actual. Cada placa base tiene un "reloj del sistema" que es responsable de llevar la cuenta del tiempo. Los sistemas operativos tienen acceso a ese reloj del sistema y proporcionan API para leer ese reloj. Y Unity obtiene la hora de esa API y así es como se sincronizan las cosas.

Piense en un juego como una película, que es esencialmente una secuencia de imágenes. La diferencia es que una película se procesa a una velocidad fija de 24 imágenes por segundo, mientras que un juego no tiene una velocidad de fotogramas fija.

En una película, si un coche viaja a 1 metro por segundo, cada imagen hará que se mueva 1/24 de metro, y después de 24 imágenes (1 segundo) el coche habrá recorrido exactamente 1 metro. Es fácil porque sabemos que cada fotograma tarda exactamente 1/24 de segundo.

En un juego, tenemos que hacer lo mismo, excepto que la velocidad de fotogramas varía. Algunos fotogramas pueden tardar 1/60 de segundo, otros pueden tardar 1/10 de segundo. No podemos usar una proporción fija. En lugar de un número fijo, tenemos que usar Time.deltaTime. En cada fotograma, el coche se desplazará una distancia proporcional al tiempo del fotograma. Después de aproximadamente 1 segundo, el automóvil habrá recorrido aproximadamente 1 metro.

Delta es el símbolo matemático de una diferencia finita. Su uso es muy común en inglés cuando se habla de algo que cambió con el tiempo.

deltaTime es una diferencia de tiempo, por lo que es un Delta

Términos más cortos

Siempre debe usar Time.deltaTime cuando mueva objetos a lo largo del tiempo, ya sea proporcionándolo usted mismo o haciendo uso de funciones como SmoothDamp que usan Time.deltaTime de forma predeterminada (sin embargo, casi ninguna función hace eso). Pero nunca debe usar Time.deltaTime para la entrada que ya es independiente de la velocidad de fotogramas, como el movimiento del mouse, ya que en ese caso usar Time.deltaTime hará lo contrario de lo que pretende.

Si alguna vez no está seguro, siempre puede activar y desactivar vsync y observar cualquier posible diferencia de velocidad. Si el juego ya se está ejecutando cerca de la frecuencia de actualización del monitor, utilice Application.targetFrameRate en su lugar.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda