Cách dễ nhất là dịch đối tượng sao cho điểm 0,0 là tâm, xoay nó, sau đó dịch trở lại vị trí. Tôi không quen thuộc với libGDX, nhưng phải có một phương pháp để tổng hợp ba biến đổi, có nghĩa là bạn chỉ áp dụng một biến đổi tổng hợp cho đối tượng của bạn. Hãy nhớ thứ tự bạn tổng hợp các biến đổi, tạo sự khác biệt.
Một cách phức tạp hơn mang lại kết quả chính xác tương tự như tính toán số lượng bù đắp được tạo ra bởi xoay và dịch hình ảnh trở về nguồn gốc của nó. Đừng làm theo cách này. Kết hợp ba biến đổi đơn giản là cách để đi và một trong những lý do tốt nhất để sử dụng các biến đổi.
** Chỉnh sửa Nhìn vào API đối tượng diễn viên có phương thức dịch(). Sử dụng điều này để thay đổi hình ảnh của bạn để điểm 0,0 nằm ở giữa. Trong psuedocode;
x = this.getX();
y = this.getY();
cx = this.getWidth() * .5;
cy = this.getHeight() * .5;
this.translate(-(x+cx), -(y+cy)); // move so 0,0 is the centre of the Actor object
this.rotate(thisMuch); // rotate the Actor
this.translate((x+cx), (y+cy)); // move it back to its original location
Điều này sẽ dẫn đến đối tượng của bạn quay ở điểm giữa của nó ngay tại chỗ. Nó trông phức tạp, nhưng nó khá hiệu quả trong thực tế, nhiều hơn như vậy nếu bạn có thể làm việc trực tiếp với các ma trận (biến đổi) sẽ được lái xe các phương pháp này.
Nguồn
2012-12-17 20:49:07
Đó là giải pháp dễ nhất. Tôi chỉ thiết lập nguồn gốc bên trong của Actor trong phương thức roll_onto_screen(). Cảm ơn các bạn! –
Nếu tôi phải liên tục xoay một diễn viên hoặc nhóm thì sao? – ManishSB
Bạn chỉ cần quấn rotationAction thành một hành động lặp lại hơn, và thiết lập hành động lặp lại là tác nhân của hành động. – Kedu