Сначала легко вращать спрайт, вы можете использовать холст или матрицу:
Matrix matrix = new Matrix();
matrix.postRotate(angle, (ballW / 2), (ballH / 2)); //rotate it
matrix.postTranslate(X, Y); //move it into x, y position
canvas.drawBitmap(ball, matrix, null); //draw the ball with the applied matrix
// method two
canvas.save(); //save the position of the canvas
canvas.rotate(angle, X + (ballW / 2), Y + (ballH / 2)); //rotate the canvas' matrix
canvas.drawBitmap(ball, X, Y, null); //draw the ball on the "rotated" canvas
canvas.restore(); //rotate the canvas' matrix back
//in the second method only the ball was roteded not the entire canvas
Чтобы повернуть его к пункту назначения, вам нужно знать угол между спрайтом и пунктом назначения:
spriteToDestAngle = Math.toDegrees(Math.atan2((spriteX - destX)/(spriteY - destY)));
Теперь все, что вам нужно сделать, это использовать этот угол для поворота спрайта и настроить его с помощью константы, такой как angleShift, которая зависит от того, куда изначально указывает ваш спрайт.
Я не уверен, что это сработает, но надеюсь, что это может дать вам некоторые идеи ...