Làm cách nào để xoay hình ảnh theo chiều kim đồng hồ bằng LibGDX? những gì tôi đang tìm kiếm là khi một hình ảnh được tải, giả sử một ngôi sao, tôi cần phải xoay nó từ đầu màn hình đến cuối màn hình theo chiều ngang, với sao quay, làm thế nào tôi có thể làm điều đó trong libgdx?Xoay ảnh theo chiều kim đồng hồ bằng cách sử dụng LibGDX
Trả lời
Khi bạn vẽ họa tiết bằng SpriteBatch, bạn có thể sử dụng một trong các chức năng vẽ bao gồm xoay vòng. Javadoc này có tất cả các chức năng vẽ: SpriteBatch
Bạn có thể giữ một biến cho vị trí và xoay, và tăng thành phần xoay và x của vị trí mỗi khi bạn render để làm cho nó xoay trong khi di chuyển theo chiều ngang.
Bạn cũng có thể sử dụng các hành động Scene2D. Tôi có một ví dụ ở đây với các loại tiểu hành tinh rơi xuống màn hình và quay.
http://www.netthreads.co.uk/2012/02/09/libgdx-scene2d-demo-with-scene-transitions/
Tiếp theo là việc thực hiện để xoay bất kỳ sprite
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 --;
Ban đầu thiết lập bộ đếm đến
private float count =360.0f;
Bạn có thể làm điều đó quá như thế này:
trên tạo của bạn phương pháp
sprite.setOrigin(sprite.getWitdh() /2f, sprite.getHeight() /2f);
sprite.setPosition(0, 200); //200 it's a example
trên render (đồng bằng float) của bạn
sprite.setX(sprite.getX() + delta).setRotation(sprite.getRotation() + delta);
Để xoay ngược và ngang .. tạo textureRegion sau đó
Sprite sprite = new Sprite(textureRegion, 0, 0, 128, 128);
sprite.setPosition(++mX, 0);
angle++;
sprite.setRotation(angle);
sprite.draw(batcher);
Libgdx mang đến cho bạn nhiều hơn thì một trong những cách để làm điều đó : Bạn có thể sử dụng Scene2D
và thêm Image
vào số Stage
của mình. Image
là một lớp con của Actor
, vì vậy bạn có thể thêm Action
s với nó:
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);
Trong render
sau đó bạn có thể gọi stage.act()
, cập nhật vị trí, luân chuyển, quy mô ... của tất cả các Actor
của bạn và sau đó gọi stage.draw()
sẽ gọi draw()
cho tất cả Actor
giây của bạn. Hình ảnh allready xử lý các draw()
vì vậy bạn không cần phải quan tâm về điều đó nữa.
Bạn cũng có thể làm điều đó mà không scene2d
, bằng cách cập nhật tất cả những gì mình:
Bạn có thể lưu trữ một int rotationSpeed
trong độ/giây
Bạn có thể lưu trữ một int moveSpeed
trong các đơn vị/giây (có thể điểm ảnh nhưng tôi sẽ đề nghị sử dụng máy ảnh hoặc chế độ xem và sử dụng đơn vị riêng của bạn, bằng nhau trên tất cả các thiết bị)
Lưu trữ float angle
, là vòng quay hiện tại của Texture
và lưu trữ Vector2 position
, chứa vị trí x và y của Texture
.
Nếu bạn muốn di chuyển theo hướng x và y, bạn cũng có thể lưu trữ Vector2 direction
, được chuẩn hóa Vector
, cho phần trăm chuyển động theo hướng x và y, nhưng đó là một câu chuyện khác.
Sau đó, trong bạn render(float delta)
bạn cập nhật tất cả mọi thứ:
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);
Đối với xoay chiều kim đồng hồ chỉ cần sử dụng một tiêu cực rotationSpeed
hoặc thay thế angle+=
với angle-=
.
Hy vọng điều đó sẽ hữu ích.
Đây là cách đơn giản để xoay một diễn viên trong libgdx. Trước tiên, bạn cần phải thiết lập nguồn gốc:
img.setOrigin(getWidth/2,getHeight/2);
Và sau đó bạn có thể xoay chiều kim đồng hồ và ngược lại theo nhu cầu của bạn:
img.rotate(2f); or img.rotate(-2f);
Vì vậy, các mẫu sau đây làm việc cho tôi (xoay vô hạn)
Phương pháp 1: (được khuyến nghị)
loadingActor.addAction(Actions.repeat(RepeatAction.FOREVER, Actions.rotateBy(360, 1)));
Phương pháp 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. Xoay UIImageView theo chiều kim đồng hồ
- 2. Xoay một chiều kim đồng hồ theo chiều kim đồng hồ cho một góc lớn hơn 180 độ
- 3. CGContextAddArc ngược chiều kim đồng hồ thay vì theo chiều kim đồng hồ
- 4. vẽ theo chiều kim đồng hồ trong pyglet (python)
- 5. Python: cốt truyện theo chiều kim đồng hồ
- 6. Tại sao xoay vòng của tôi chỉ đi ngược chiều kim đồng hồ khi tôi muốn đi theo chiều kim đồng hồ?
- 7. Xóa dấu ngoặc bổ sung trong chế độ Pareditwise theo chiều kim đồng hồ
- 8. Làm cách nào để thực thi một hướng cụ thể (tức là chiều kim đồng hồ) của xoay vòng trong Hoạt ảnh chính?
- 9. Tìm trung tâm của một tập hợp các điểm để sắp xếp chúng theo chiều kim đồng hồ?
- 10. Làm cách nào để tạo hình ảnh xoay theo hướng vuốt ngón tay của tôi
- 11. Đặt Xoay máy ảnh trong Libgdx
- 12. Nền động bằng cách sử dụng Libgdx
- 13. xoay hình ảnh 3D bằng cách sử dụng javascript
- 14. Sử dụng xoay vòng xoay trong Opengl
- 15. Đồng hồ ảnh cho ứng dụng C#
- 16. Xoay hình ảnh xung quanh một vòng tròn?
- 17. Làm thế nào để làm cho các góc trong một âm mưu cực matplotlib đi theo chiều kim đồng hồ với 0 ° ở đầu?
- 18. Làm thế nào để xoay một diễn viên hình ảnh trong libgdx bằng điểm giữa?
- 19. Xoay hình ảnh trong android
- 20. Làm thế nào để xoay hình ảnh bằng cách sử dụng jquery xoay plugin?
- 21. Cách đặt Báo thức bằng cách sử dụng lớp đồng hồ báo thức
- 22. Cách đặt chiều cao, chiều rộng thành hình ảnh bằng cách sử dụng jquery
- 23. C#: giảm một đồng hồ bằng cách sử dụng phép toán modulus
- 24. Vẽ một BitmapFont được xoay trong libgdx
- 25. Làm cách nào để xoay hình ảnh bằng cách sử dụng CSS?
- 26. Cách dễ nhất để xoay 90 độ một hình ảnh bằng cách sử dụng OpenCV?
- 27. Nhận tọa độ x, y mới của một điểm trong hình ảnh được xoay
- 28. Sử dụng thiết kế theo hợp đồng bằng Python
- 29. Tạo đồng hồ kỹ thuật số bằng cách sử dụng một sợi
- 30. ứng dụng bộ nhớ sử dụng hồ bơi theo dõi
Câu hỏi của bạn không rõ ràng lắm. Bạn đang xoay một Texture, Sprite, hoặc hình ảnh? Bằng cách "xoay nó từ đầu màn hình đến cuối màn hình theo chiều ngang, với sao quay", bạn có nghĩa là bạn muốn ngôi sao di chuyển theo chiều ngang trong khi xoay? –
@RahatAhmed: xin lỗi, tôi đang có kết cấu, yes.i cần nó xoay trong khi di chuyển theo chiều ngang –