2013-12-24 3 views
0

У меня есть простой образ в моей Java-игре на Slick2d, и я пытаюсь повернуть его на 90 градусов. Однако при использовании метода «Image.rotate (angle)» изображение заканчивается движением, а также вращением. Я попытался силой установить центр вращения, чтобы быть точным центром изображения, но результаты одинаковы. Вот до и после выстрелов. Идея состоит в том, что танк будет вращаться на 90 градусов и останется на той же площади. Центр вращения, который был принудительно набор показан точкой после поворота:My Slick2d Изображение не вращается, как ожидалось

До: before

После: after

Код:

public void turn(String direction){ 
    if(direction.equals("right")){ 
     if(movableEntityImage.getRotation() != 90){ 
      System.out.println("Pre rotate x = " + x + " . Pre rotate y = " + y + ". width = " + width + ". height = " + height); 
      System.out.println("Pre rotate rotation = " + movableEntityImage.getRotation()); 
      float rotX = (x + (width/2)); 
      float rotY = (y + (height/2)); 
      movableEntityImage.setCenterOfRotation(rotX, rotY); 
      System.out.println("center of rotation X = " + movableEntityImage.getCenterOfRotationX() + ".center of rotation y = "+ movableEntityImage.getCenterOfRotationY()); 
      movableEntityImage.rotate(90); 


      System.out.println("Post rotate x = " + x + " . Post rotate y = " + y); 
      System.out.println("Post rotate rotation = " + movableEntityImage.getRotation()); 



     } 

    } 

И, наконец, консольный выход:

The tank has been created with an x of: 50.0 and a y of: 50.0 
Pre rotate x = 50.0 Pre rotate y = 50.0 width = 25.0 height = 25.0 
Pre rotate rotation = 0.0 
Center of rotation X = 62.5 Center of rotation y = 62.5 
Post rotate rotation = 90.0 

Я что-то упустил? Или я об этом поступил неправильно.

Спасибо, Джош

ответ

0

решаемая. Проблема была с центром вращения. Похоже, что когда вы устанавливаете центр вращения для изображения, ось 0,0 фактически находится в верхнем левом углу изображения, а не в верхнем левом углу игрового контейнера. Таким образом, в моем примере я установил координату координаты по центру x как координату X и ширину более 2, когда на самом деле мне нужно было установить ширину более 2.