Unity: ¿en qué casos debo agregar Time.deltaTime?
– UnityAssets3Free
bienvenido , me llamo josel luis y en esta ocasion os traigo
nueva pregunta curiosa
Soy nuevo en Unity y veo esto mucho Time.deltaTime
necesita ser agregado. ¿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);
2 respuestas 2
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 se encarga de llevar la cuenta del tiempo. Los sistemas operativos tienen acceso a este reloj del sistema y proporcionan API para leer este reloj. Y Unity obtiene el tiempo 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 fotogramas por segundo, mientras que un juego no tiene una velocidad de fotogramas fija.
En una película, si un automóvil viaja a 1 metro por segundo, cada cuadro hará que se mueva 1/24 de metro, y después de 24 cuadros (1 segundo) el automóvil habrá recorrido exactamente 1 metro. Es fácil porque sabemos que cada cuadro toma 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. Con cada cuadro, el automóvil se moverá una distancia proporcional al tiempo del cuadro. 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 ha cambiado con el tiempo.
deltaTime es una diferencia horaria, 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 (aunque casi ninguna función lo hace). Pero nunca debe usar Time.deltaTime para entradas que ya son independientes de la velocidad de fotogramas, como el movimiento del mouse, en cuyo caso usar Time.deltaTime hará lo contrario de lo que pretende.
Si 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, use Application.targetFrameRate.
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 conviertes de Something per frame
en Something per second
.
¿Es necesario?
Ahora, si necesita usarlo, ¡depende totalmente de su caso de uso específico! en tu caso por AddForce
: ¡NO!.
La fuerza influye en la velocidad de un objeto físico. La velocidad en sí Está a absoluto por segundo vector.
Por lo general, hay dos casos de uso para AddForce
:
-
Se denomina continuamente, pero por dentro
FixedUpdate
Por qué
FixedUpdate
no se llama cada cuadro de todos modos, pero a intervalos fijos en tiempo real (por defecto 0.02 segundos) no necesitaríasTime.deltaTime
. El Doc ya proporciona esto en el ejemplo.. -
De todos modos, se llama simplemente como un Evento único (por ejemplo, saltar)
Aquí no hay nada continuo, por lo que no necesita y no quiere usar
Time.deltaTime
o dado que un solo evento no puede depender de la velocidad de fotogramas de ninguna manera.
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
eso es todo,espero que te funcione