次の回転機能があります。
public void rotate( Actor a ) {
float rotateBy = 30.0f,
newX = ( a.getX() * ( float ) Math.cos( rotateBy ) ) - ( a.getY() * ( float ) Math.sin( rotateBy ) ),
newY = ( a.getX() * ( float ) Math.sin( rotateBy ) ) + ( a.getY() * ( float ) Math.cos( rotateBy ) ),
moveByX = a.getX() - newX, // delta
moveByY = a.getY() - newY, // delta
duration = 1.0f; // 1 second
a.addAction(
Actions.sequence(
Actions.parallel(
Actions.rotateBy( rotateBy, duration ),
Actions.moveBy( moveByX, moveByY, duration )
)
)
);
}
しかし、moveByXとmoveByYの値は正確ではないようです。
目標は、回転後の新しい x、y がどうなるかを把握し、その分上に移動して、回転前と同じ y を維持することです。
また、私のアクターの描画方法:
@Override
public void draw( Batch batch, float parentAlpha ) {
batch.draw( texture, getX(), getY(), getWidth()/2, getHeight()/2, getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation() );
}