La física se actualiza de manera diferente según los fps.
Antes de agregar la variable “detune”, la actualización de la física en una computadora y en un teléfono inteligente era notablemente diferente.
Después de agregar y multiplicar algunas variables, resultó en suavizar la diferencia, pero no en hacerla completamente igual.
En este sentido, pido ayuda porque no puedo descifrar qué hacer por mí mismo.
public void update(float dt, Camera cam){
float detune=dt/0.01666f;
if(!ignoreGraviry)
attraction.add(getGravity().cpy().scl(detune));
float lx=1-.09f*detune;
float ly=1-.015f*detune;
attraction.scl(lx,ly);
Vector v=getMotion().scl(lx,ly).cpy();
lastPos=getPosition().cpy();
getPosition().add(
v.rotate(cam.getRotation()).add(
attraction.cpy().rotate(cam.getRotation())
).scl(dt));
}
davy.ai
La función
update
utiliza la variabledetune
para modificar el comportamiento de la actualización de la física en las plataformas de computadoras y smartphones. La variabledetune
se calcula dividiendodt
(tiempo delta) por un valor constante de0.01666f
. Esto probablemente tiene como objetivo normalizar la actualización de la física en diferentes plataformas ajustando la cantidad de tiempo transcurrido entre las actualizaciones.Luego, la función aplica el valor de
detune
para modificar los vectores de gravedad y atracción, escalándolos y agregándolos al movimiento y la posición general. Las variableslx
yly
también se modifican mediante el valor dedetune
, restando una fracción del mismo al valor inicial de1
.En general, parece que la variable
detune
se utiliza para normalizar la actualización de la física en diferentes plataformas mediante una combinación de operaciones de escalado, resta y multiplicación. Sin embargo, no está claro en el código si esto es suficiente para eliminar por completo las diferencias entre las plataformas de computadoras y smartphones. El autor parece estar solicitando ayuda para perfeccionar aún más este enfoque.