studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java camera rotation box2d libgdx

java - para - manual de programacion android pdf



Establecer la rotación de la cámara en Libgdx (1)

Parece que no puedo encontrar la manera de vincular la rotación de mi cámara ortográfica en libgdx (proyecto con box2d) con la rotación de un cuerpo box2d. Existe el método de cam.rotate (xy), que le da un impulso o aceleración, pero me gustaría establecer un valor definitivo, algo así como

cam.setAngle(player.body.getAngle());

¿Cómo voy a hacer esto? ¿Debo escribir mi propia función? Si es así, ¿cómo? Quiero que la rotación de la cámara sea siempre la misma que la del jugador ...

¡Gracias!


Después de dormir bien, ¡me desperté pensando en la solución! la función cam.angle (ángulo) obviamente ajusta el ángulo a lo que desea (en grados), pero solo debe hacerlo una vez y no en su ciclo de actualización; de lo contrario, la cámara solo comienza a girar. Lo cual es obvio, pero simplemente no lo entendí.

el otro problema es que el cuerpo de box2d tiene grados "infinitos" (yo convierto todo a grados con * MathUtils.radiansToDegrees), así que tuve que restringirlos a 0 a 359:

playerAngle = player.body.getAngle()*MathUtils.radiansToDegrees; while(playerAngle<=0){ playerAngle += 360; } while(playerAngle>360){ playerAngle -= 360; }

Los grados de la cámara van de -180 a 180, por lo que también debe convertirlos a 0 a 359:

camAngle = -getCameraCurrentXYAngle(camera) + 180;

La función "getCameraCurrentXYAngle (cam) es la siguiente:

public float getCameraCurrentXYAngle(OrthographicCamera cam) { return (float)Math.atan2(cam.up.x, cam.up.y)*MathUtils.radiansToDegrees; }

Y ahora en uso esto para actualizar tu cámara a la rotación de tu reproductor:

camera.rotate((camAngle-playerAngle)+180);

Espero que esto ayude a la persona que votó por mi pregunta;)

¡Saludos y ten un día productivo! Jonas