¿Cómo podemos rotar una imagen en el sentido de las agujas del reloj con LibGDX? lo que estoy buscando es cuando una imagen está cargada, supongamos una estrella, necesito rotarla desde el principio de la pantalla hasta el final de la pantalla horizontalmente, con la estrella girando, ¿cómo puedo hacer eso en libgdx?Girar la imagen en el sentido de las agujas del reloj con LibGDX
Respuesta
Al dibujar la textura con su SpriteBatch, puede utilizar una de las funciones de dibujo que incluye la rotación. Este javadoc tiene todas las funciones de dibujar: SpriteBatch
Puede mantener una variable de posición y rotación, y aumentar la rotación y el componente x de la posición cada vez que renderiza para hacerla girar mientras se mueve horizontalmente.
También puede usar las acciones de Scene2D. Aquí tengo un ejemplo con cosas de tipo asteroide que caen por la pantalla y giran.
http://www.netthreads.co.uk/2012/02/09/libgdx-scene2d-demo-with-scene-transitions/
siguiente es la aplicación para girar cualquier sprites
batch.draw(sprite,(Gdx.graphics.getWidth() - sprite.getRegionWidth())/2.0f,(Gdx.graphics.getHeight() - sprite.getRegionHeight())/2.0f,sprite.getRegionWidth()/2.0f,sprite.getRegionHeight()/2.0f, sprite.getRegionWidth(), sprite.getRegionHeight(), 1f, 1f,count, false);
if(count < 0.0f)
count = 360.0f;
else
count --;
Inicialmente establecido en contra de
private float count =360.0f;
Puede hacerlo también así:
en su creación método
sprite.setOrigin(sprite.getWitdh() /2f, sprite.getHeight() /2f);
sprite.setPosition(0, 200); //200 it's a example
en su render (delta flotación)
sprite.setX(sprite.getX() + delta).setRotation(sprite.getRotation() + delta);
Para girar hacia la izquierda y horizontalmente .. crear un textureRegion continuación
Sprite sprite = new Sprite(textureRegion, 0, 0, 128, 128);
sprite.setPosition(++mX, 0);
angle++;
sprite.setRotation(angle);
sprite.draw(batcher);
libgdx le da más de una manera de hacer eso : Puede usar Scene2D
y agregar Image
a su Stage
. Image
es una subclase de Actor
, lo que puede añadir Action
s a ella:
Image myImage = new Image(myTexture);
myImage.addAction(Actions.parallel(Actions.moveTo(endX, endY, duration), Actions.rotateBy(degrees, duration)));
myImage.setPosition(startX, startY);
myImage.setOrigin(sizeX/2, sizeY/2);
stage.add(myImage);
En render
a continuación, puede llamar stage.act()
, que actualiza la posición, rotación, escala ... de todos sus Actor
s y luego llamar stage.draw()
que llamará draw()
para todos sus Actor
s. La imagen ya se ocupa del draw()
por lo que ya no necesita preocuparse por eso.
También puede hacerlo sin scene2d
, mediante la actualización de todo usted mismo:
Puede almacenar un int rotationSpeed
en grados/seg
Usted puede almacenar un int moveSpeed
en unidades/seg (tal vez de píxeles pero sugeriría a utilizar la cámara o visor y utilizar su propia unidad, que es igual en todos los dispositivos)
tienda del float angle
, que es la rotación actual de su Texture
y almacenar un Vector2 position
, que contiene la posición x e y de su Texture
.
Si desea moverse en dirección xey, también puede almacenar un Vector2 direction
, que es un Vector
normalizado, dando el porcentaje de movimiento en dirección xey, pero esa es una historia diferente.
Luego, en su render(float delta)
actualizar todo:
angle+=delta*rotationSpeed;
angl%=360; // Limits the angle to be <= 360
while (angle < 0) // Unfortunally the "modulo" in java gives negative result for negativ values.
angle+=360;
position.x+=direction.x*moveSpeed*delta;
position.y+=direction.y*movSpeed*delta;
spriteBatch.draw(yourTextureRegion, position.x, position.y, sizeX/2, sizeY/2, sizeX, sizeY, scaleX, scaleY, angle);
Para la rotación de las agujas del reloj sólo tiene que utilizar un negativo rotationSpeed
o reemplazar el angle+=
con angle-=
.
Espero que ayude.
Aquí hay un sencillo para rotar a un actor en libgdx. En primer lugar es necesario establecer el origen:
img.setOrigin(getWidth/2,getHeight/2);
Y entonces se puede girar en sentido horario y antihorario según su necesidad:
img.rotate(2f); or img.rotate(-2f);
Así que el siguiente ejemplo trabajó para mí (rotación infinita)
Método 1: (recomendado)
loadingActor.addAction(Actions.repeat(RepeatAction.FOREVER, Actions.rotateBy(360, 1)));
Método 2:
Image loadingActor = new Image(AssetsController.getInstance().getLoading());
loadingActor.setOrigin(Align.center);
final SequenceAction infiniteRotate = Actions.sequence();
infiniteRotate.addAction(Actions.rotateTo(0 , 0f));
infiniteRotate.addAction(Actions.rotateTo(360 , 1f));
loadingActor.addAction(Actions.forever(infiniteRotate));
- 1. Ordene cuatro puntos en el sentido de las agujas del reloj
- 2. Python: diagrama polar en el sentido de las agujas del reloj
- 3. Cómo pedir puntos en sentido contrario a las agujas del reloj
- 4. Última entrada en sentido contrario a las agujas del reloj REPL?
- 5. Gire un UIView en el sentido de las agujas del reloj para un ángulo superior a 180 grados
- 6. Girar imagen en android
- 7. Cómo rotar una imagen en sentido horario o antihorario, ¿cuál de las dos es más corta?
- 8. Girar cara en la imagen
- 9. Girar texto en IE, sin que se ponga feo
- 10. C# girar en sentido horario a la izquierda y girar a la derecha
- 11. Girar imagen en UIImageView
- 12. Girar imagen matemáticas (C#)
- 13. Girar la imagen en el centro no va suave (Monodroid)
- 14. Girar una imagen en java
- 15. ¿Manera cruzada del navegador para girar la imagen usando CSS?
- 16. Girar una imagen usando css
- 17. Girar imagen * sin * cambiar el tamaño
- 18. El reloj del emulador no coincide con el reloj del sistema host
- 19. Imagen numpy - girar la matriz 270 grados
- 20. Superar la confusión del pajar de agujas en PHP
- 21. ¿Cómo puedo aplicar una dirección específica (es decir, en sentido horario) de rotación en Core Animation?
- 22. Uso de PIL para girar automáticamente la imagen tomada con el teléfono celular y el acelerador
- 23. Girar la imagen junto con el toque para fijar el punto en Android
- 24. Girar la imagen correspondiente a la función de arrastre táctil en iPhone
- 25. Girar un pivote de imagen en el centro - Android
- 26. Girar una imagen en C/C++
- 27. Cómo puedo hacer que una imagen gire en función de la dirección de deslizamiento de mi dedo
- 28. aplicación libgdx y android. Imagen como fondo
- 29. Android Girar imagen antes de guardar
- 30. Girar la cámara en Three.js con el mouse
Su pregunta no es muy clara. ¿Estás rotando una Textura, Sprite o Imagen? Al "rotarlo desde el principio de la pantalla hasta el final de la pantalla horizontalmente, con la rotación de la estrella", ¿quiere decir que quiere que la estrella se mueva horizontalmente mientras gira? –
@RahatAhmed: lo siento, estoy teniendo una textura, sí, necesito que gire mientras me muevo horizontalmente –